У npm install: Необроблене відхилення Помилка: EACCES: відмовлено у дозволі


271

Мені вдалося зіпсувати npmвстановлення, і коли я намагаюся встановити пакунки за допомогою npm install, я отримую повідомлення про помилки за цими рядками:

Помилка відхилення без обробки

Я спробував перевстановити вузол & npm, а також спробував перенести кеш npm в інше місце, використовуючи ці інструкції, але нічого не працює.

Як я можу змусити це працювати?

Відповіді:


924

Відновити право власності на пов’язані з npm папки користувача поточному користувачеві, наприклад:

sudo chown -R $USER:$GROUP ~/.npm
sudo chown -R $USER:$GROUP ~/.config

10
Це спрацювало для мене після того, як я спробував 4-5 інших речей, які не спрацювали: 1) - небезпечний засіб, 2) оновлення npm, 3) перезапуск, 4) біг з судо і т. Д.
Алекс Йорк,

2
Те саме, що для мене @AlexYork. Я бачив свого користувача та групу вже як власника цих двох, але, мабуть, у підкаталогу чи двох є різні власники. Дякую!
Ведран

1
Це працювало для мене :), до цього я намагався цей docs.npmjs.com/… . Не в змозі зрозуміти, чи це одна і та ж проблема, чи відрізняється.
nim118

1
Схоже, в якийсь момент в моєму розкладі з вузлом один із цих каталогів кешу був створений з rootвласністю. Це все виправлено. Дякую!
Lonnon Foster

2
це працювало для мене, дякую! Я спробував перевстановити npm за допомогою диспетчера версій вузла, який рекомендував npm, але це не вийшло!
Вінні Фан


42

Це трапляється, якщо перший раз запускаєте NPM це з sudo, наприклад, при спробі зробити npm install -g.

Папки кеша повинні належати поточному користувачеві, а не root.

sudo chown -R $USER:$GROUP ~/.npm
sudo chown -R $USER:$GROUP ~/.config

Це надасть право власності на вищезазначені папки під час роботи з звичайними дозволами користувача (не як sudo).

Також варто зазначити, що не слід встановлювати глобальні пакети за допомогою SUDO. Якщо у вас виникли проблеми з дозволами, варто змінити глобальний каталог. Документи рекомендують:

mkdir ~/.npm-global

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

Потім оновіть свій PATH там, де ви це визначите (~ / .profile тощо)

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

Потім вам потрібно буде переконатися, що встановлена ​​змінна PATH env (перезапуск терміналу або використання вихідної команди)

https://docs.npmjs.com/resolving-eacces-permissions-errors-when-installing-packages-globally


3
Голосування за чітке пояснення того, чому :)
lnoogn

Так. Це вирішило для мене проблему, коли «правильного рішення», зазначеного вище, не було.
Джон Сміт

Весь цей матеріал слід абстрагувати за допомогою npm, але натомість ми маємо розбиратися з ним вручну. Ви б могли подумати, що обслуговуючим персоналом буде головним пріоритетом виправляти такі речі, але що я знаю. Дякуємо за пояснення, чому нам потрібно робити ці команди!
YungGun


9

Вище відповідь не працювала для мене. Просто спробуйте запустити свою команду --unsafe-perm.

напр

npm install -g node@latest --unsafe-perm

Це, здається, вирішує проблему.


@JenLim ти це розібрав чи ні?
Джунайд Фарук

Я вирішив проблему, виконавши в терміналі наступне: кеш npm clear - force.
Аспін Лім


2

просто створіть папки _cache/tmpпід .npmручним розташуванням /Users/marknorgate/.npm/_cacache/tmpта запустіть свою команду з доступом адміністратора





1

змінити право власності

sudo chown -R $USER:$GROUP ~/.npm
sudo chown -R $USER:$GROUP ~/.config 

працював над тим, як я встановив пакет за допомогою sudo


1

Спробуйте скористатися цим: У командному рядку у своєму домашньому каталозі створіть каталог для глобальних установок:

mkdir ~/.npm-global

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

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

У бажаному текстовому редакторі відкрийте або створіть файл ~ / .profile і додайте цей рядок:

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

У командному рядку оновіть системні змінні:

source ~/.profile

Тепер використовуйте npm install, це має працювати.


0

ви можете спробувати наступну команду для expo:

sudo chown -R $USER:$GROUP ~/.expo



-1

Цей для мене працює:

sudo chown -R $(whoami) ~/.npm

Я не користувався тим, -gщо я єдиний користувач. Я використовував MacBook Air.

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