288 votes

Sur l'installation de npm : Unhandled rejection Error : EACCES : permission denied

J'ai réussi à corrompre mon npm install, et chaque fois que j'essaie d'installer des paquets à l'aide de npm install Je reçois des messages d'erreur de ce type :

Erreur de rejet non gérée : EACCES : permission denied, open '/Users/marknorgate/.npm/_cacache/tmp/a449402d' (permission refusée)

J'ai essayé de réinstaller node et npm, et j'ai aussi essayé de relocaliser mon cache npm ailleurs en utilisant ces instructions mais rien ne fonctionne.

Comment puis-je le faire fonctionner ?

976voto

SrAxi Points 8077

Restaurez la propriété des dossiers relatifs à npm de l'utilisateur, à l'utilisateur actuel, comme ceci :

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

11 votes

Cela a fonctionné pour moi après avoir essayé 4-5 autres choses qui n'ont pas fonctionné : 1) --unsafe-perm, 2) mise à jour de npm, 3) redémarrage, 4) exécution avec sudo, etc etc.

2 votes

Même chose que @AlexYork pour moi. J'ai vu mon utilisateur et mon groupe déjà comme le propriétaire de ces deux, mais je suppose qu'un sous-répertoire ou deux avaient un ou plusieurs propriétaires différents. Merci !

1 votes

Cela a marché pour moi :), avant cela j'essayais ceci docs.npmjs.com/ . Je n'arrive pas à comprendre s'il s'agit du même problème ou d'un problème différent.

72voto

Osama Rashid Points 680

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

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

47voto

Ryu Kent Points 561

Cela se produit si la première fois que vous exécutez NPM, c'est avec sudo, par exemple en essayant de faire un npm install -g.

Les dossiers de cache doivent appartenir à l'utilisateur actuel, et non à Root.

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

Ceci donnera la propriété des dossiers ci-dessus lorsqu'ils sont exécutés avec les permissions normales de l'utilisateur (pas en tant que sudo).

Il convient également de noter que vous ne devriez pas installer de paquets globaux en utilisant SUDO. Si vous rencontrez des problèmes de permissions, cela vaut la peine de changer votre répertoire global. La documentation le recommande :

mkdir ~/.npm-global

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

Ensuite, mettez à jour votre PATH là où vous le définissez (~/.profile, etc.).

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

Vous devrez ensuite vous assurer que la variable d'environnement PATH est définie (en redémarrant le terminal ou en utilisant la commande source).

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

3 votes

Je vote pour l'explication claire du pourquoi :)

0 votes

Yup. Cela a résolu le problème pour moi alors que la "solution correcte" ci-dessus ne l'a pas fait.

0 votes

Toutes ces choses devraient être abstraites par npm, mais à la place nous devons nous en occuper manuellement. On pourrait penser qu'il serait prioritaire pour les mainteneurs de corriger ce genre de choses, mais qu'en sais-je ? Merci d'avoir expliqué pourquoi nous devons faire ces commandes !

12voto

Mwangi Gituathi Points 25
sudo npm cache clean --force --unsafe-perm

et ensuite npm i se déroule normalement

10voto

ijunaidfarooq Points 336

La réponse ci-dessus n'a pas fonctionné pour moi. Essayez d'exécuter votre commande avec --unsafe-perm .

Par exemple

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

Cela semble résoudre le problème.

0 votes

@JenLim avez-vous résolu le problème ou non ?

0 votes

J'ai résolu le problème en exécutant ce qui suit dans le terminal : npm cache clear-force.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X