При установке npm: необработанное отклонение. Ошибка: EACCES: разрешение запрещено


271

Мне удалось повредить мою npmустановку, и всякий раз, когда я пытаюсь установить пакеты, используя npm install, я получаю сообщения об ошибках по следующим направлениям:

Ошибка необработанного отклонения: EACCES: разрешение отклонено, откройте «/Users/marknorgate/.npm/_cacache/tmp/a449402d»

Я попытался переустановить узел & npm, и я также попытался переместить мой кэш npm в другое место, используя эти инструкции, но ничего не работает.

Как я могу заставить это работать?

Ответы:


926

Восстановите право собственности на связанные с npm папки пользователя для текущего пользователя, например так:

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

10
Это сработало для меня после того, как я попробовал 4-5 других вещей, которые не работали: 1) --unsafe-perm, 2) обновление npm, 3) перезапуск, 4) запуск с sudo и т. Д. И т. Д.
Alex York,

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

1
Это сработало для меня :), до этого я пытался это docs.npmjs.com/… . Не в состоянии понять, если это та же проблема или другая.
nim118

1
Похоже, что в какой-то момент моего перехода к узлу, один из этих каталогов кеша был создан с rootвладельцем. Это исправило все. Спасибо!
Лоннон Фостер

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 установлена ​​(перезапуск терминала или использование команды source)

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



Ага. Это решило проблему для меня, когда «правильное решение» выше не помогло.
Джон Смит

Все это должно быть удалено с помощью npm, но вместо этого мы должны иметь дело с этим вручную. Вы могли бы подумать, что сопровождающим было бы очень важно исправить подобные вещи, но что я знаю. Спасибо за объяснение, почему мы должны делать эти команды!
YungGun


9

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

например

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

Кажется, это решает проблему.


@JenLim ты разобрался или нет?
Джунаид Фарук

Я решил проблему, запустив в терминале следующее: npm cache clear - force.
Аспин Лим


2

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


2
sudo npm install --unsafe-perm=true --allow-root

Это был тот, который работал для меня




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, установите, это должно работать.


0

Вы можете попробовать следующую команду для выставки:

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.