npm · npm
Die Meldung
npm ERR! Error: EACCES: permission denied, access '/usr/local/lib/node_modules'
Was es bedeutet
npm wollte in ein Systemverzeichnis schreiben, das Ihrem Benutzer nicht gehört — das Paket ist in Ordnung, Sie haben dort nur kein Schreibrecht. Fast immer ist es npm install -g gegen ein node, das die Paketverwaltung des Betriebssystems an einen Ort wie /usr/local gelegt hat. npm config set prefix ~/.npm-global verlegt globale Installationen in Ihr Heimatverzeichnis, und sobald dessen bin im PATH liegt, kehrt der Fehler nicht zurück. sudo npm install -g funktioniert zwar, hinterlässt aber root-eigene Dateien in Cache und node_modules, die später bei normalen Installationen dasselbe EACCES auslösen; ein Versionsmanager wie nvm beseitigt die ganze Fehlerklasse.
Die Lösung
npm config set prefix ~/.npm-global- Ausgegeben von
- npm
- npm
- 20
Bei npm steht die Ursache in der ersten code-XXXX-Zeile und nicht in den letzten sechs npm-ERR!-Zeilen, und wenn der Fehler aus dem Abhängigkeitsbaum oder einem Native-Build statt aus eigenem Code kommt, löst das Löschen von node_modules mit erneuter Installation etwa die Hälfte.
Eine Fehlermeldung lesen
- Von der ersten Zeile abwärts lesen. Weiter unten geht es um das Innere des Werkzeugs; die Ursache steht meist oben.
- Gibt es Datei und Zeilennummer, dort anfangen — nicht der oberste Stack-Frame, sondern die oberste Zeile, die eine eigene Datei nennt.
- Die Meldung wörtlich suchen, vorher aber eigene Pfade und Variablennamen entfernen; genau die verhindern den Treffer.
- Dieselbe Lage wird je Werkzeugversion anders formuliert. Passen die Treffer nicht, die Versionsnummer mit in die Suche.
- Vor dem Einfügen einer Lösung prüfen, was sie verwirft. Manches davon lässt sich nicht zurückholen.
Häufige Fragen
Q. Was bedeutet „npm ERR! Error: EACCES: permission denied, access '/usr/local/lib/node_modules'“?
npm wollte in ein Systemverzeichnis schreiben, das Ihrem Benutzer nicht gehört — das Paket ist in Ordnung, Sie haben dort nur kein Schreibrecht. Fast immer ist es npm install -g gegen ein node, das die Paketverwaltung des Betriebssystems an einen Ort wie /usr/local gelegt hat. npm config set prefix ~/.npm-global verlegt globale Installationen in Ihr Heimatverzeichnis, und sobald dessen bin im PATH liegt, kehrt der Fehler nicht zurück. sudo npm install -g funktioniert zwar, hinterlässt aber root-eigene Dateien in Cache und node_modules, die später bei normalen Installationen dasselbe EACCES auslösen; ein Versionsmanager wie nvm beseitigt die ganze Fehlerklasse.
Q. Wie behebe ich das?
npm config set prefix ~/.npm-global — vor dem Ausführen oben prüfen, was dieser Befehl verwirft.
Q. Welches Werkzeug gibt das aus?
npm. Es gehört zu npm, und die Meldung hat 8 Wörter.