Bei npm-Installation: Nicht behandelte Ablehnung Fehler: EACCES: Berechtigung verweigert


271

Ich habe es geschafft, meine npmInstallation zu beschädigen, und wenn ich versuche, Pakete mit zu installieren npm install, erhalte ich folgende Fehlermeldungen:

Nicht behandelte Ablehnung Fehler: EACCES: Berechtigung verweigert, öffnen Sie '/Users/marknorgate/.npm/_cacache/tmp/a449402d'

Ich habe versucht, node & npm neu zu installieren, und ich habe auch versucht, meinen npm-Cache mithilfe dieser Anweisungen an eine andere Stelle zu verschieben, aber nichts funktioniert.

Wie kann ich es zum Laufen bringen?

Antworten:


921

Stellen Sie dem aktuellen Benutzer den Besitz der npm-bezogenen Ordner des Benutzers wie folgt wieder her:

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

10
Dies funktionierte für mich, nachdem ich 4-5 andere Dinge ausprobiert hatte, die nicht funktionierten: 1) --unsafe-perm, 2) Upgrade von npm, 3) Neustart, 4) Laufen mit Sudo usw. usw.
Alex York

2
Gleich wie @AlexYork für mich. Ich habe meinen Benutzer und meine Gruppe bereits als Eigentümer dieser beiden gesehen, aber ich denke, ein oder zwei Unterverzeichnisse hatten unterschiedliche Eigentümer. Vielen Dank!
Vedran

1
Das hat bei mir funktioniert :), vorher habe ich diese docs.npmjs.com/… ausprobiert . Ich kann nicht verstehen, ob es sich um dasselbe oder ein anderes Problem handelt.
Nim118

1
Es sieht so aus, als ob irgendwann in meinem Kampf mit dem Knoten eines dieser Cache-Verzeichnisse mit rootBesitz erstellt wurde. Dies hat alles behoben. Danke dir!
Lonnon Foster

2
das hat bei mir funktioniert, danke! Ich habe versucht, npm mit einem von npm empfohlenen Node-Versions-Manager neu zu installieren, aber es hat nicht funktioniert!
Winnie Phan


42

Dies geschieht, wenn Sie NPM zum ersten Mal mit sudo ausführen, z. B. wenn Sie versuchen, eine npm-Installation -g durchzuführen.

Die Cache-Ordner müssen dem aktuellen Benutzer gehören, nicht root.

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

Dadurch erhalten die oben genannten Ordner Eigentum, wenn sie mit normalen Benutzerberechtigungen ausgeführt werden (nicht als sudo).

Es ist auch erwähnenswert, dass Sie keine globalen Pakete mit SUDO installieren sollten. Wenn Sie auf Probleme mit Berechtigungen stoßen, sollten Sie Ihr globales Verzeichnis ändern. Die Dokumente empfehlen:

mkdir ~/.npm-global

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

Aktualisieren Sie dann Ihren PATH an der Stelle, an der Sie dies definieren (~ / .profile usw.).

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

Sie müssen dann sicherstellen, dass die Variable PATH env festgelegt ist (Terminal neu starten oder den Befehl source verwenden).

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


3
Wählen Sie dies für die klare Erklärung, warum :)
lnoogn

Jep. Dies löste das Problem für mich, als die oben genannte "richtige Lösung" dies nicht tat.
John Smith

All dieses Zeug sollte von npm abstrahiert werden, aber stattdessen müssen wir es manuell behandeln. Sie würden denken, es wäre eine hohe Priorität für die Betreuer, solche Dinge zu reparieren, aber was weiß ich. Vielen Dank für die Erklärung, warum wir diese Befehle ausführen müssen!
YungGun


9

Die obige Antwort hat bei mir nicht funktioniert. Versuchen Sie einfach, Ihren Befehl mit auszuführen--unsafe-perm .

z.B

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

Dies scheint das Problem zu lösen.


@ JenLim hast du es geklärt oder nicht?
Junaid Farooq

Ich habe das Problem gelöst, indem ich im Terminal Folgendes ausgeführt habe: npm cache clear - force.
Aspyn Lim


2

Erstellen Sie einfach Ordner _cache/tmpunter .npmmanuell am Speicherort /Users/marknorgate/.npm/_cacache/tmpund führen Sie Ihren Befehl mit Administratorzugriff aus


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

Dies war derjenige, der für mich gearbeitet hat




1

Eigentümer wechseln

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

arbeitete für, als ich Paket mit Sudo installiert


1

Versuchen Sie Folgendes: Erstellen Sie in der Befehlszeile in Ihrem Ausgangsverzeichnis ein Verzeichnis für globale Installationen:

mkdir ~/.npm-global

Konfigurieren Sie npm für die Verwendung des neuen Verzeichnispfads:

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

Öffnen oder erstellen Sie in Ihrem bevorzugten Texteditor eine ~ / .profile-Datei und fügen Sie diese Zeile hinzu:

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

Aktualisieren Sie in der Befehlszeile Ihre Systemvariablen:

source ~/.profile

Verwenden Sie jetzt npm install, es sollte funktionieren.


0

Sie können den folgenden Befehl für expo versuchen:

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


0

Einfach am Terminal ausführen: sudo chown -R $(whoami) ~/.npm

Das hat bei mir funktioniert !!


-1

Dieser funktioniert für mich:

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

Ich habe das nicht benutzt, -gweil ich der einzige Benutzer bin. Ich habe ein MacBook Air benutzt.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.