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

271

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

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

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

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

serlingpa
источник

Ответы:

926

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

sudo chown -R $USER:$GROUP ~/.npm
sudo chown -R $USER:$GROUP ~/.config
SrAxi
источник
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, но это не сработало!
Винни Фан,
67

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

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

Усама Рашид
источник
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

Рю Кент
источник
3
Голосуем
Ага. Это решило проблему для меня, когда «правильное решение» выше не помогло.
Джон Смит
Все это должно быть удалено с помощью npm, но вместо этого мы должны иметь дело с этим вручную. Вы могли бы подумать, что сопровождающим было бы очень важно исправить подобные вещи, но что я знаю. Спасибо за объяснение, почему мы должны делать эти команды!
YungGun
11
sudo npm cache clean --force --unsafe-perm

а затем нпм я иду нормально

Мванги Гитуати
источник
9

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

например

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

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

Джунаид Фарук
источник
@JenLim ты разобрался или нет?
Джунаид Фарук
Я решил проблему, запустив в терминале следующее: npm cache clear - force.
Аспин Лим
6

Если ни одно из предложений в ответ не работает, попробуйте следующую команду: npm cache clear --force. Это сработало для меня.

Я нашел его по адресу https://github.com/vuejs/vue-cli/issues/1809 .

Аспин Лим
источник
2

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

Аншуман Джайсвал
источник
2
sudo npm install --unsafe-perm=true --allow-root

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

BliteKnight
источник
1

Просто делай sudo npm cache clean --force --unsafe-permи npm iпойдет нормально.

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

AyushKatiyar
источник
0

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

sudo chown -R $USER:$GROUP ~/.expo
Cesur Bağcı
источник
0

Просто запустите на терминале: sudo chown -R $(whoami) ~/.npm

Это сработало для меня!

Акшита Агарвал
источник
-1

Этот работает для меня:

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

Я не использовал, -gпотому что я единственный пользователь. Я использовал MacBook Air.

Арли Ордонез
источник