Troubleshooting: npm - Missing write access

Zuletzt aktualisiert am 17. Januar 2024 3 Minuten

Beim installieren globaler Pakete mit npm ist der Fehler “Missing write access” aufgetreten:

npm WARN checkPermissions Missing write access to /usr/local/lib/node_modules
npm ERR! path /usr/local/lib/node_modules
npm ERR! code EACCES
npm ERR! errno -13
npm ERR! syscall access
npm ERR! Error: EACCES: permission denied, access '/usr/local/lib/node_modules'
npm ERR!  { [Error: EACCES: permission denied, access '/usr/local/lib/node_modules']
npm ERR!   stack:
npm ERR!    'Error: EACCES: permission denied, access \'/usr/local/lib/node_modules\'',
npm ERR!   errno: -13,
npm ERR!   code: 'EACCES',
npm ERR!   syscall: 'access',
npm ERR!   path: '/usr/local/lib/node_modules' }
npm ERR!
npm ERR! The operation was rejected by your operating system.
npm ERR! It is likely you do not have the permissions to access this file as the current user
npm ERR!
npm ERR! If you believe this might be a permissions issue, please double-check the
npm ERR! permissions of the file and its containing directories, or try running
npm ERR! the command again as root/Administrator (though this is not recommended).
npm ERR! A complete log of this run can be found in:
npm ERR!     /Users/cnichte/.npm/_logs/2019-11-01T11_10_39_023Z-debug.log

Die erste Zeile der Meldung gibt die Lösung vor:

npm WARN checkPermissions Missing write access to /usr/local/lib/node_modules

Passe die Rechte für das Verzeichnis an. Gib dazu im Terminal ein:

sudo chown -R $USER /usr/local/lib/node_modules

Was passiert hier?

sudo bedeutet, dass du diesen Befehl als root ausführst, dem Superuser des Systems. Das liegt daran, dass du keine Berechtigung hast, in diesen Ordner zu schreiben, aber root kann jede Berechtigung korrigieren. Dieser Befehl bedeutet auch, dass das System dich zur Bestätigung deines Passworts auffordert.

chown ist der Befehl, mit dem du den Besitzer einer Datei oder eines Ordners ändern. Du setzt die Option -R, um den Eigentümer rekursiv zu ändern, so dass du auch Zugriff auf alle bereits darin enthaltenen Dateien erhältst.

$USER ist eine Umgebungsvariable, die automatisch auf deinen Benutzernamen gesetzt wird.

Der letzte Parameter ist der Pfad. Nach Ausführung des Befehls gehört der Ordner dir, so dass du dein npm install -g <package> Befehl ohne Fehler ausführen kannst.

Falls die Fehlermeldung wieder auftritt hat die jemand die Rechte entzogen, und du darfst chown wieder ausführen.

chown ist der Befehl, mit dem du den Besitzer einer Datei oder eines Ordners ändern. Du setzt die Option -R, um den Eigentümer rekursiv zu ändern, so dass du auch Zugriff auf alle bereits darin enthaltenen Dateien erhältst.

$USER ist eine Umgebungsvariable, die automatisch auf deinen Benutzernamen gesetzt wird.

Der letzte Parameter ist der Pfad. Nach Ausführung des Befehls gehört der Ordner dir, so dass du dein npm install -g <package> Befehl ohne Fehler ausführen kannst!

Halte immer ein Auge auf dem Ordner. Falls die Fehlermeldung wieder auftritt musst du chown wieder ausführen.