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?

serlingpa
quelle

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
SrAxi
quelle
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
66

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

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

Osama Rashid
quelle
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

Ryu Kent
quelle
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
11
sudo npm cache clean --force --unsafe-perm

und dann npm gehe ich normal

Mwangi Gituathi
quelle
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.

Junaid Farooq
quelle
@ 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

Anshuman Jaiswal
quelle
2
sudo npm install --unsafe-perm=true --allow-root

Dies war derjenige, der für mich gearbeitet hat

BliteKnight
quelle
1

Einfach machen sudo npm cache clean --force --unsafe-permund npm inormal gehen.

James Okunlade
quelle
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

Technologe
quelle
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.

AyushKatiyar
quelle
0

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

sudo chown -R $USER:$GROUP ~/.expo
cesur bağcı
quelle
0

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

Das hat bei mir funktioniert !!

Akshita Agarwal
quelle
-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.

Arly Ordonez
quelle