Fehler: EACCES: Berechtigung verweigert, Zugriff auf '/ usr / lib / node_modules'

74

Ich versuche, Typoskript mit Befehl zu installieren npm install -g typescriptund gebe diesen Fehler zurück:

    npm ERR! Error: EACCES: permission denied, access '/usr/lib/node_modules'
    npm ERR!     at Error (native)
    npm ERR!  { Error: EACCES: permission denied, access '/usr/lib/node_modules'
    npm ERR!     at Error (native)
    npm ERR!   errno: -13,
    npm ERR!   code: 'EACCES',
    npm ERR!   syscall: 'access',
    npm ERR!   path: '/usr/lib/node_modules' }
    npm ERR! 
    npm ERR! Please try running this command again as root/Administrator.
    npm ERR! Linux 4.4.0-93-generic
    npm ERR! argv "/usr/bin/nodejs" "/usr/bin/npm" "install" "-g" "typescript"
    npm ERR! node v6.11.2
    npm ERR! npm  v3.10.10
    npm ERR! path npm-debug.log.1024969454
    npm ERR! code EACCES
    npm ERR! errno -13
    npm ERR! syscall open

    npm ERR! Error: EACCES: permission denied, open 'npm-debug.log.1024969454'
    npm ERR!     at Error (native)
    npm ERR!  { Error: EACCES: permission denied, open 'npm-debug.log.1024969454'
    npm ERR!     at Error (native)
    npm ERR!   errno: -13,
    npm ERR!   code: 'EACCES',
    npm ERR!   syscall: 'open',
    npm ERR!   path: 'npm-debug.log.1024969454' }
    npm ERR! 
    npm ERR! Please try running this command again as root/Administrator.

    npm ERR! Please include the following file with any support request:
    npm ERR!     /npm-debug.log
    jramirez@jramirez:/$ ^C
    jramirez@jramirez:/$ npm install typescript
    npm WARN checkPermissions Missing write access to /
    /
    └── [email protected] 

    npm WARN enoent ENOENT: no such file or directory, open '/package.json'
    npm WARN !invalid#1 No description
    npm WARN !invalid#1 No repository field.
    npm WARN !invalid#1 No README data
    npm WARN !invalid#1 No license field.
    npm ERR! Linux 4.4.0-93-generic
    npm ERR! argv "/usr/bin/nodejs" "/usr/bin/npm" "install" "typescript"
    npm ERR! node v6.11.2
    npm ERR! npm  v3.10.10
    npm ERR! path /
    npm ERR! code EACCES
    npm ERR! errno -13
    npm ERR! syscall access

    npm ERR! Error: EACCES: permission denied, access '/'
    npm ERR!     at Error (native)
    npm ERR!  { Error: EACCES: permission denied, access '/'
    npm ERR!     at Error (native) errno: -13, code: 'EACCES', syscall: 'access', path: '/' }
    npm ERR! 
    npm ERR! Please try running this command again as root/Administrator.
    npm ERR! Linux 4.4.0-93-generic
    npm ERR! argv "/usr/bin/nodejs" "/usr/bin/npm" "install" "typescript"
    npm ERR! node v6.11.2
    npm ERR! npm  v3.10.10
    npm ERR! path npm-debug.log.2387664261
    npm ERR! code EACCES
    npm ERR! errno -13
    npm ERR! syscall open

    npm ERR! Error: EACCES: permission denied, open 'npm-debug.log.2387664261'
    npm ERR!     at Error (native)
    npm ERR!  { Error: EACCES: permission denied, open 'npm-debug.log.2387664261'
    npm ERR!     at Error (native)
    npm ERR!   errno: -13,
    npm ERR!   code: 'EACCES',
    npm ERR!   syscall: 'open',
    npm ERR!   path: 'npm-debug.log.2387664261' }
    npm ERR! 
    npm ERR! Please try running this command again as root/Administrator.

    npm ERR! Please include the following file with any support request:
    npm ERR!     /npm-debug.log

Zusätzlich npm install typescriptstarte ich auch (ohne -g), aber funktioniert nicht oder gibt es eine andere Möglichkeit, Typoskript zu installieren? Mein Betriebssystem ist Linux Ubuntu 16.04. Ich benutze nodedieses Problem selten und weiß nicht, wie ich es beheben soll.

Meine Frage ist: Genau, welche Verzeichnisse benötigen diese Berechtigungen?

jjoselon
quelle
4
Versuchen Siesudo npm install -g typescript
Juan

Antworten:

244

Es wird nicht empfohlen, sudo mit npm install zu verwenden. Befolgen Sie stattdessen die Schritte aus den offiziellen Dokumenten von npmjs :)

Erstellen Sie 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 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

Test: Laden Sie ein Paket global herunter, ohne sudo zu verwenden.

npm install -g typescript

Quelle: https://docs.npmjs.com/getting-started/fixing-npm-permissions

Euler Ribeiro Sudbrack
quelle
2
Du hast meinen Tag gerettet, Alter. Es funktioniert perfekt, danke.
Almett
4
Sollte Schritt 3 export PATH="~/.npm-global/bin:$PATH"nicht aus Gründen der Persistenz eingefügt werden .bash_aliases(enthalten von .bashrcoder direkt dort ...)?
Frank Nocke
empfohlene Lösung (Y)
Hassan Ahmed
1
Dies ist eine viel bessere Antwort. Kein Fummeln mit sudooder Verzeichnisberechtigungen.
Terence Ponce
2
Wenn Sie die Z-Shell (Zsh) verwenden, fügen export PATH=~/.npm-global/bin:$PATHSie sie hinzu ~/.zshrcund geben Sie die Datei ein
Homam Bahrani,
15

Wenn Sie globale Pakete in Ubuntu installieren, benötigen Sie spezielle Schreibberechtigungen, wenn Sie in den usr/binOrdner schreiben . Es ist aus Sicherheitsgründen.

Verwenden Sie also jedes Mal, wenn Sie ein globales Paket installieren, Folgendes:

sudo npm install -g [package-name]

für Ihren speziellen Fall:

sudo npm install -g typescript

Wenn Sie es ohne -galles versuchen, was Sie tun, installieren Sie das Paket lokal in dem Ordner, in dem Sie sich befinden:

Also: npm install typescriptErstellt einen node_modulesOrdner in dem Ordner, in dem Sie sich befinden.

Juan
quelle
1
Wäre es furchtbar falsch, stattdessen ein chmod g+rwOn /usr/lib/node_modules/zu machen?
Frank Nocke
24
Sie sollten sudo nicht mit NPM installieren.
Abdalla Arbab
Die Vorstellung, dass sudo nicht mit NPM verwendet werden sollte, ist falsch und entspricht nicht dem Paradigma der Installation globaler Binärdateien an Orten, die im UNIX- Dateisystem-Hierarchiestandard festgelegt sind .
Wheeler
6

Ich habe das gleiche Problem mit der Installation des Webpack-Servers auf globaler Ebene. Schritte verwenden Mein Problem behoben, meine Arbeit für Sie.

Die oben genannten Schritte Dort: Sichern Sie Ihren Computer, bevor Sie beginnen.

Erstellen Sie ein Verzeichnis für globale Installationen:

1. mkdir ~/.npm-global

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

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

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

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

Aktualisieren Sie in der Befehlszeile Ihre Systemvariablen:

4. source ~/.profile

Test: Laden Sie ein Paket global herunter, ohne sudo zu verwenden.

npm install -g jshint

Anstelle der Schritte 2 bis 4 können Sie die entsprechende ENV-Variable verwenden (z. B. wenn Sie ~ / .profile nicht ändern möchten):

NPM_CONFIG_PREFIX=~/.npm-global

Vishal Patel
quelle
1

Ich bin mir nicht sicher, ob dies die richtige Lösung für dieses Problem sein könnte, aber ich hoffe, dass dies anderen in einer ähnlichen Situation helfen kann, die bereits Folgendes versucht hat:

  • Habe die Empfehlung auf der npm-Website angewendet
  • Überprüfte die richtigen Berechtigungen für den node_modulesOrdner und fand nichts Falsches
  • Gebraucht sudo npm install <package>(Lösung, die ich sowieso nicht empfehle) mit oder ohne -gund hatte kein erwartetes Ergebnis

Die Lösung für dieses Problem wies darauf hin, als ich bemerkte, dass beim Versuch, das axiosPaket mit zu installieren npm, das Verzeichnis mit dem gesamten Projekt in Visual Studio Code geöffnet wurde. Also habe ich es geschlossen und die Installation erneut versucht. Überraschung, die Installation hat wie ein Zauber gewirkt.

Für den Versuch, dasselbe Problem zu replizieren, habe ich Ubuntu 18.04 LTS unter WSL verwendet (möglicherweise hat dies etwas mit Windows-Berechtigungen zu tun).

Dies könnte auch die Lösung für diese Frage sein: Fehler: EACCES: Berechtigung verweigert, Zugriff '/ usr / local / lib / node_modules' reagiert

Cosmin
quelle
0

1) Wechseln Sie in das Verzeichnis " / usr / local / lib / node_modules ".

2) Klicken Sie auf den Ordner und klicken Sie mit der rechten Maustaste auf Informationen abrufen

3) Klicken Sie auf das Schloss unten rechts

4) Geben Sie zum Entsperren Ihr Fensterkennwort ein

5) Überprüfen Sie sowohl den Wert von Wheel als auch von Everyone to Read & Write

6) Gehen Sie zurück zu Ihrem Terminal und versuchen Sie erneut, das Typescript zu installieren

Gian Dal Pont
quelle
wheelist eine BSD / RedHat-Sache, nicht in Debian-basierten Systemen wie Ubuntu unix.stackexchange.com/questions/4460/…
Novaterata
0

Bitte folgen Sie der npm-Website - https://docs.npmjs.com/resolving-eacces-permissions-errors-when-installing-packages-globally

"Wenn beim Versuch, ein Paket global zu installieren, ein EACCES-Fehler auftritt, können Sie entweder: npm mit einem Knotenversionsmanager neu installieren (empfohlen) oder das Standardverzeichnis von npm manuell ändern."

Ich habe den empfohlenen Weg befolgt - nvm installiert. Es hat mein Problem gelöst

vinzbruce
quelle
-3

das hat bei mir funktioniert.

sudo npm install -g coffee-script

dann

sudo npm install -g typescript
Fthi.a.Abadi
quelle
3
Vermeiden Sie die Verwendung von sudo mit npm install, was aus Sicherheitsgründen gefährlich sein kann. Befolgen Sie die Schritte in den offiziellen Dokumenten von npmj. docs.npmjs.com/getting-started/fixing-npm-permissions
Mihai