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.