npm install -g менше не працює: EACCES: дозвіл відхилено


202

Я намагаюся налаштувати менше на phpstorm, щоб я міг компілювати .less файли до .css при збереженні. Я встановив node.js і наступним кроком (відповідно до цього https://www.jetbrains.com/webstorm/help/transpiling-sass-less-and-scss-to-css.html ) виконується ця команда в термінал

npm install -g less

Однак коли я це роблю, я отримую ці помилки

  ~  npm install -g less
npm WARN install Couldn't install optional dependency: EACCES: permission denied, mkdir '/Users/brentscholl/.npm/mkdirp/0.5.1'
npm WARN install Couldn't install optional dependency: EACCES: permission denied, mkdir '/Users/brentscholl/.npm/graceful-fs/3.0.8'
npm WARN install Couldn't install optional dependency: EACCES: permission denied, mkdir '/Users/brentscholl/.npm/extend/3.0.0'
npm WARN install Couldn't install optional dependency: EACCES: permission denied, mkdir '/Users/brentscholl/.npm/readable-stream/2.0.4'
npm WARN install Couldn't install optional dependency: EACCES: permission denied, mkdir '/Users/brentscholl/.npm/chalk/1.1.1'
npm WARN install Couldn't install optional dependency: EACCES: permission denied, mkdir '/Users/brentscholl/.npm/xtend/4.0.1'
npm WARN checkPermissions Missing write access to /usr/local/lib/node_modules
/usr/local/lib
└─┬ less@2.5.3
  ├─┬ errno@0.1.4
   └── prr@0.0.0
  ├── image-size@0.3.5
  ├── mime@1.3.4
  ├─┬ promise@6.1.0
   └── asap@1.0.0
  └─┬ source-map@0.4.4
    └── amdefine@1.0.0

npm ERR! Darwin 15.0.0
npm ERR! argv "/usr/local/bin/node" "/usr/local/bin/npm" "install" "-g" "less"
npm ERR! node v5.0.0
npm ERR! npm  v3.3.6
npm ERR! path /usr/local/lib/node_modules
npm ERR! code EACCES
npm ERR! errno -13
npm ERR! syscall access

npm ERR! Error: EACCES: permission denied, access '/usr/local/lib/node_modules'
npm ERR!     at Error (native)
npm ERR!  { [Error: EACCES: permission denied, access '/usr/local/lib/node_modules']
npm ERR!   errno: -13,
npm ERR!   code: 'EACCES',
npm ERR!   syscall: 'access',
npm ERR!   path: '/usr/local/lib/node_modules' }
npm ERR!
npm ERR! Please try running this command again as root/Administrator.

npm ERR! Please include the following file with any support request:
npm ERR!     /Users/brentscholl/npm-debug.log

Я тут повний ноб і не впевнений, що робити далі. Будь-яка допомога буде дуже вдячна!

Відповіді:


353

Використовувати судо не рекомендується. Це може дати вам дозвіл на пізніше. Хоча вищезазначене працює, я не є прихильником того, щоб змінювати папки, що належать root, для запису для користувачів, хоча це може бути проблемою лише для кількох користувачів. Щоб обійти це, ви можете використовувати групу з 'npm користувачами', але це також більше адміністративних витрат. Ознайомтеся з параметрами роботи з дозволами з документації: https://docs.npmjs.com/getting-started/fixing-npm-permissions

Я б пішов на варіант 2:

Щоб мінімізувати ймовірність помилок дозволів, ви можете налаштувати npm для використання іншого каталогу. У цьому прикладі це буде прихований каталог у вашій домашній папці.

Створіть каталог глобальних установок:

 mkdir ~/.npm-global

Налаштуйте npm для використання нового шляху до каталогу:

 npm config set prefix '~/.npm-global'

Відкрийте або створіть файл ~ / .profile і додайте цей рядок:

 export PATH=~/.npm-global/bin:$PATH

Повернувшись до командного рядка, оновіть системні змінні:

 source ~/.profile

Тест: Завантажте пакет у всьому світі, не використовуючи sudo.

npm install -g jshint

Якщо все ще відображається запуск помилки дозволу (mac os):

sudo chown -R $USER ~/.npm-global   

Це працює з установкою ubuntu за замовчуванням:

sudo apt-get install nodejs npm

Я рекомендую, nvmякщо ви хочете більшої гнучкості в управлінні версіями: https://github.com/creationix/nvm

На MacOS, що використовує варити, він повинен працювати без sudoкоробки, якщо ви користуєтеся останньою npmверсією. Насолоджуйтесь :)


Heads up-- на Ubuntu 18.04 Мені довелося вийти з системи та увійти в систему, перш ніж зміни були застосовані автоматично всі нові термінальні вікна.
Олександр Нієд

Олександре, ти переконався, що ти використовував початкову команду? Це повинно піклуватися про встановлення правильних змінних умов середовища, вихід із системи не повинен бути потрібним (але працює).
Вінсент Герріс

це не працювало $ npm install -g jshint npm ERR! написати після закінчення npm ERR! Повний журнал цього запуску можна знайти у: npm ERR! /home/xx/.npm/_logs/2019-02-22T06_35_08_821Z-debug.log
Амджіт

3
Дякуємо за те, що "На MacOS використовують пиво"
Bijender Singh

110

Запустіть ці команди у вікні терміналу (зверніть увагу: НЕ замінюйте частину $ USER ... ось команда Linux для отримання вашого користувача!):

sudo chown -R $USER ~/.npm
sudo chown -R $USER /usr/lib/node_modules
sudo chown -R $USER /usr/local/lib/node_modules

7
Це гарна ідея зробити себе власником речей /usr? Що робити, якщо хтось інший хоче встановити вузол?
Марк

6
Працював для мене на MacOS High Sierra, я потрібен тільки один з трьох команд: sudo chown -R $USER /usr/local/lib/node_modules. @ Марк Це правда, але, звичайно, немає проблем, якщо у вас є лише один користувач.
Fabian von Ellerts

@FabianvonEllerts Ну, все ж легше випадково видалити системні файли, оскільки судо більше не знадобиться ... Я просто слідкую за найкращими методами навіть у самоті, але це, звичайно, залежить від вас.
Марк

Я з Mark, якщо у вас є один користувач (і навіть тоді), ви не хочете мати підкаталоги / usr, що належать одному користувачеві, і в цьому випадку краще використовувати групу. Але, можливо, ще краще, просто використовуйте варити, як я вже згадував у своїй відповіді, воно буде працювати без кореня поза коробкою.
Вінсент

11

Перевстановіть вузол і npm за допомогою Manger Version Manger (відповідно до написаної в npm-документації ), щоб уникнути помилок дозволу:

В OSX:

curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.33.8/install.sh | bash

або дотримуйтесь цієї статті:

http://dev.topheman.com/install-nvm-with-homebrew-to-use-multiple-versions-of-node-and-iojs-easily/

Користувачі Windows повинні встановити nvm-windows . Для подальшої довідки щодо встановлення nvm див. Команду nvm .

Потім виберіть для прикладу:

nvm install 8.0.0
nvm use 8.0

Тепер ви можете спробувати ще:

npm install -g less

1
Я використовував це для вирішення проблем з дозволом при встановленні пакетів на CodeSandbox.
Кіт Тейлор

11

Відповідь Mac OS X

У вас немає доступу на запис до каталогу node_modules

npm WARN checkPermissions Missing write access to /usr/local/lib/node_modules

Додайте свого користувача до каталогу з доступом до запису

  1. Відкрийте папку, що містить node_modules

    відкрити / usr / local / lib /

  2. Зробіть cmd + I у папці node_modules, щоб відкрити діалогове вікно дозволу
  3. Додайте свого користувача, щоб мати доступ для читання та запису в розділі спільного доступу та дозволів введіть тут опис зображення

Найпростіше і найефективніше рішення для MacOS
itsazzad


7

Для мого середовища Mac

sudo chown -R $USER /usr/local/lib/node_modules

вирішити питання


Я вважаю, що це вже висвітлено у відповіді @ VagnerRodrigues вище.
entpnerd

Так, я щойно згадував про mac середовище
Asadut Zaman

3

Просто натисніть команду нижче:

sudo chown -R $USER /usr/local/lib/node_modules

Давайте розбимо його:

судо

означає, що ми виконуємо цю команду як root, суперкористувач системи. Це тому, що ми не маємо дозволу писати у цю папку, але root зможе виправити будь-який дозвіл. Ця команда також означає, що система попросить підтвердити ваш пароль.

чоун

це команда, яку ми використовуємо, щоб змінити власника файлу чи папки. Ми встановлюємо опцію -R для зміни власника рекурсивно, тому ми також отримуємо доступ власника до всіх файлів, які вже містяться там.

$ USER

це змінна середовище, яка автоматично встановлюється на ваше ім'я користувача.

І завершальний фрагмент - шлях до папки.

Виконання цього шляху зробить папку вашою, тому ви можете сміливо запускати npm install -g команди!


0

Я спробував усі запропоновані рішення, але нічого не вийшло.

Я використовую macOS Catalina 10.15.3

Перейти до / usr / local /

Виберіть папку бінь> Отримати інформацію

Додайте свого користувача до спільного доступу та дозволів. Читання та запис дозволів. введіть тут опис зображення

І перейдіть до терміналу і запустіть npm install -g @ ionic / cli

Це мені допомогло.


-1

У Linux переконайтеся, що отримуєте всі повноваження за допомогою:

sudo su


-3

Привіт, я використовую Ubuntu 18, і я теж отримав це повідомлення про помилку під час встановлення Prisma, тоді я просто додаю sudoспереду

sudo npm i -g prisma
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.