wake-up-neo.com

npm gibt Fehler ohne Sudo aus

Ich habe gerade node und npm durch das Paket auf nodejs.org installiert. Immer wenn ich versuche, etwas mit npm zu suchen oder zu installieren, wird der folgende Fehler ausgegeben, es sei denn, ich gebe den Befehl Sudo. Ich habe das Gefühl, dass es sich um ein Berechtigungsproblem handelt. Ich bin schon der Admin.

npm ERR! Error: EACCES, open '/Users/chietala/.npm/-/all/.cache.json'
npm ERR!  { [Error: EACCES, open '/Users/chietala/.npm/-/all/.cache.json']
npm ERR!   errno: 3,
npm ERR!   code: 'EACCES',
npm ERR!   path: '/Users/chietala/.npm/-/all/.cache.json' }
npm ERR! 
npm ERR! Please try running this command again as root/Administrator.

npm ERR! System Darwin 12.2.0
npm ERR! command "node" "/usr/local/bin/npm" "search" "bower"
npm ERR! cwd /Users/chietala
npm ERR! node -v v0.10.4
npm ERR! npm -v 1.2.18
npm ERR! path /Users/chietala/.npm/-/all/.cache.json
npm ERR! code EACCES
npm ERR! errno 3
npm ERR! stack Error: EACCES, open '/Users/chietala/.npm/-/all/.cache.json'
npm ERR! 
npm ERR! Additional logging details can be found in:
npm ERR!     /Users/chietala/npm-debug.log
npm ERR! not ok code 0
1082
Chad

Das sieht aus wie ein Berechtigungsproblem in Ihrem Basisverzeichnis. Um den Besitz des Verzeichnisses .npm zurückzufordern, führen Sie Folgendes aus:

Sudo chown -R $(whoami) ~/.npm
1955
Noah

Berechtigungen, die Sie bei der Installation von Node verwendet haben, sind erforderlich, wenn Sie beispielsweise in Ihrem npm-Verzeichnis (npm link, npm install -g usw.) schreiben.

Sie haben wahrscheinlich eine Knoteninstallation mit Root-Berechtigungen ausgeführt. Daher werden Sie bei der globalen Paketinstallation aufgefordert, root zu sein.


Lösung 1: NVM

Nicht mit Berechtigungen hacken, Knoten richtig installieren.

Auf einem Entwicklungscomputer sollten Sie keinen Knoten mit Root-Berechtigungen installieren und ausführen. Andernfalls benötigen Dinge wie npm link und npm install -g dieselben Berechtigungen.

NVM (Node Version Manager) ermöglicht Ihnen die Installation von Node ohne Rootberechtigungen sowie die Installation vieler Node-Versionen, um problemlos mit ihnen zu spielen. Ideal für die Entwicklung.

  1. Knoten deinstallieren (root-Berechtigung wird wahrscheinlich erforderlich sein). Das könnte dir helfen.
  2. Dann installiere NVM folge den Anweisungen auf dieser Seite .
  3. Installieren Sie den Knoten über NVM: nvm install node

Jetzt benötigen Sie für npm link, npm install -g nicht mehr root.

Bearbeiten: Siehe auch https://docs.npmjs.com/getting-started/fixing-npm-permissions


Lösung 2: Installieren Sie Pakete global für einen bestimmten Benutzer

Nicht mit Berechtigungen hacken, npm-Pakete global richtig installieren.

Wenn Sie mit OSX oder Linux arbeiten, können Sie Erstellen eines benutzerdefinierten Verzeichnisses für Ihr globales Paket und Setup npm und node, um zu erfahren, wie Sie global installierte Pakete finden.

Check out dieser großartige Artikel für eine schrittweise Anleitung zur globalen Installation von npm-Modulen ohne Sudo.

Siehe auch: npm-Dokumentation zu npm-Berechtigungen korrigieren .

519
Yves M.

Außerdem benötigen Sie die Schreibberechtigung im node_modules-Verzeichnis: 

Sudo chown -R $USER /usr/local/lib/node_modules
382
Xilo

Dies ist mir bei der Installation von Recess ( https://github.com/Twitter/recess ) zum Kompilieren meines CSS für Bootstrap 3 aufgefallen.

Beim Einbau der Aussparung:

-npm install recess -g
  1. Sie müssen die Berechtigungen in Ihrem home-Verzeichnis freischalten, z. B. Noah Sagt:

    Sudo chown -R `whoami` ~/.npm
    
  2. Sie benötigen auch Schreibberechtigungen für das Verzeichnis node_modules, z. B. Xilo . Wenn es immer noch nicht funktioniert, versuchen Sie Folgendes:

    Sudo chown -R `whoami` /usr/local/lib/node_modules
    
  3. Wenn Sie immer noch Fehler sehen, müssen Sie möglicherweise auch Korrigieren Sie /usr/local Berechtigungen :

    Sudo chown -R `whoami` /usr/local
    

Bitte beachten Sie, dass in diesem Beitrag/usr/local/ nicht wirklich ein Systemverzeichnis ist, wenn Sie sich auf einem Mac befinden. Diese Antwort ist also für Mac-Benutzer absolut "sicher". Wenn Sie jedoch mit Linux arbeiten, finden Sie unter Christopher Will s Antwort unten eine multi-benutzerfreundliche, systemsichere (aber komplexere) Lösung. 

54
danomarr

Das Ändern des Besitzers in "system-global" -Ordnern ist ein Hack. Bei einer Neuinstallation würde ich NPM so konfigurieren, dass ein bereits beschreibbarer Speicherort für "Benutzer-globale" Programme verwendet wird:

npm config set prefix ~/npm

Stellen Sie dann sicher, dass Sie diesen Ordner zu Ihrem Pfad hinzufügen:

export PATH="$PATH:$HOME/npm/bin"

Siehe @ErikAndreas ' answer to NPM-Module werden ohne Sudo .__ nicht global installiert. und längere Schritt-für-Schritt-Anleitung von @sindresorhus und setzt auch $MANPATH.

54
Joel Purra

Andere Antworten schlagen vor, Eigentümer oder Berechtigungen von Systemverzeichnissen für einen bestimmten Benutzer zu ändern. Das kann ich sehr ablehnen, dies kann sehr umständlich werden und das gesamte System stören 

Hier ist ein generischer und sicherer Ansatz, der auch Mehrbenutzer unterstützt.

Erstellen Sie eine neue Gruppe für Knotenbenutzer und fügen Sie der Gruppe die erforderlichen Benutzer hinzu. Legen Sie dann den Besitz der knotenabhängigen Dateien/Verzeichnisse auf diese Gruppe fest.

# Create new group
Sudo groupadd nodegrp 

# Add user to group (logname is a variable and gets replaced by the currently logged in user)
Sudo usermod -a -G nodegrp `logname`

# Instant access to group without re-login
newgrp nodegrp

# Check group - nodegrp should be listed as well now
groups

# Change group of node_modules, node, npm to new group 
Sudo chgrp -R nodegrp /usr/lib/node_modules/
Sudo chgrp nodegrp /usr/bin/node
Sudo chgrp nodegrp /usr/bin/npm

# (You may want to change a couple of more files (like grunt etc) in your /usr/bin/ directory.)

Nun können Sie Ihre Module einfach als Benutzer installieren

npm install -g generator-angular

Einige Module (Grunt, Laube, Yo usw.) müssen noch als root installiert werden. Dies liegt daran, dass sie Symlinks in/user/bin/erstellen.

Bearbeiten

3 Jahre später würde ich empfehlen, Node Version Manager zu verwenden. Das spart Ihnen viel Zeit und Ärger.

35

Achtung!!! Achtung!!! Achtung!!!  

chown oder chmod istNICHTdie Lösung aus Sicherheitsgründen.

Stattdessen mache:

Prüfen Sie zunächst, wohin npm zeigt, wenn Sie anrufen:

npm config get prefix

Wenn/usr zurückgegeben wird, können Sie Folgendes tun:

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

Erstellen Sie eine npm-Direktory in Ihrem Home-Verzeichnis und zeigen Sie npm darauf.

Um diese Änderungen dauerhaft zu erhalten, müssen Sie den Export-Befehl zu Ihrem .bashrc hinzufügen:

echo -e "export NPM_CONFIG_PREFIX=~/.npm-global\nexport PATH=$PATH:~/.npm-global/bin" >> ~/.bashrc
22
suther

Die offizielle Dokumentation zum Beheben von npm install-Berechtigungen mit einem EACCES-Fehler befindet sich unter https://docs.npmjs.com/getting-started/fixing-npm-permissions

Dieses Problem ist nach einer Neuinstallation des Knotens mit dem .pkg-Installationsprogramm unter OSX aufgetreten. Hier gibt es einige großartige Antworten, aber ich habe noch keinen Link zu npmjs.com gesehen.

Option 1: Ändern Sie die Berechtigung in das Standardverzeichnis von npm.

  1. Suchen Sie den Pfad zum Verzeichnis von npm:

    npm config get prefix
    

Für viele Systeme ist dies / usr/local.

WARNING: Wenn der angezeigte Pfad nur / usr ist, wechseln Sie zu Option 2.

  1. Ändern Sie den Besitzer der npm-Verzeichnisse in den Namen des aktuellen Benutzers (Ihren Benutzernamen!):

    Sudo chown -R $(whoami) $(npm config get prefix)/{lib/node_modules,bin,share}
    

    Dadurch werden die Berechtigungen der Unterordner geändert, die von npm und einigen anderen Tools verwendet werden (lib/node_modules, bin und share).

Option 2: Ändern Sie das Standardverzeichnis von npm in ein anderes Verzeichnis.

Es kann vorkommen, dass Sie den Besitz des von npm verwendeten Standardverzeichnisses nicht ändern möchten (d. H. / Usr), da dies zu Problemen führen kann, beispielsweise wenn Sie das System für andere Benutzer freigeben.

Stattdessen können Sie npm so konfigurieren, dass insgesamt ein anderes Verzeichnis verwendet wird. In unserem Fall ist dies ein verstecktes Verzeichnis in unserem Home-Ordner.

  1. Erstellen Sie ein Verzeichnis für globale Installationen:

    mkdir ~/.npm-global
    
  2. Konfigurieren Sie npm für die Verwendung des neuen Verzeichnispfads:

    npm config set prefix '~/.npm-global'
    
  3. Öffnen oder erstellen Sie eine ~/.profile-Datei und fügen Sie diese Zeile hinzu:

    export PATH=~/.npm-global/bin:$PATH
    
  4. Aktualisieren Sie wieder in der Befehlszeile Ihre Systemvariablen:

    source ~/.profile
    
15
HoppyKamper

Als ob wir hier mehr Antworten brauchen, aber trotzdem ...

Sindre Sorus hat eine Anleitung Installiere npm-Pakete global ohne Sudo unter OS X und Linux skizziert, wie eine saubere Installation durchgeführt wird, ohne sich mit Berechtigungen zu beschäftigen: 

Hier können Sie Pakete für einen bestimmten Benutzer global installieren.

  1. Erstellen Sie ein Verzeichnis für Ihre globalen Pakete

    mkdir "${HOME}/.npm-packages"
    
  2. Referenzieren Sie dieses Verzeichnis für die zukünftige Verwendung in Ihrem .bashrc/.zshrc:

    NPM_PACKAGES="${HOME}/.npm-packages"
    
  3. Geben Sie bis npm an, wo Ihr global installiertes Paket gespeichert werden soll. Fügen Sie in Ihrer $HOME/.npmrc-Datei Folgendes hinzu:

    prefix=${HOME}/.npm-packages
    
  4. Stellen Sie sicher, dass der Knoten sie findet. Fügen Sie Ihrem .bashrc/.zshrc Folgendes hinzu:

    NODE_PATH="$NPM_PACKAGES/lib/node_modules:$NODE_PATH"
    
  5. Stellen Sie sicher, dass Sie installierte Binärdateien und Manpages finden. Fügen Sie Ihrem .bashrc.zshrc Folgendes hinzu:

    PATH="$NPM_PACKAGES/bin:$PATH"
    # Unset manpath so we can inherit from /etc/manpath via the `manpath`
    # command
    unset MANPATH # delete if you already modified MANPATH elsewhere in your config
    MANPATH="$NPM_PACKAGES/share/man:$(manpath)"
    

Check out npm-g_nosudo , um die obigen Schritte automatisch auszuführen

_/Überprüfen Sie die Quelle dieses Handbuchs für die neuesten Updates.

11
ptim

Wenn Sie npm install -g somepackage ausführen, wird möglicherweise ein EACCES-Fehler angezeigt, in dem Sie aufgefordert werden, den Befehl erneut als root/Administrator auszuführen. Es ist ein Berechtigungsproblem.

Es ist easy zu beheben, öffnen Sie Ihr Terminal (Anwendungen> Dienstprogramme> Terminal)

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

** Ich empfehle Ihnen dringend, die Paketverwaltung nicht mit Sudo (Sudo npm -g) zu verwenden, da Sie später Probleme bekommen können. **

Referenz: http://foohack.com/2010/08/intro-to-npm/

TL; DR

verwenden Sie immer Sudo -i oder Sudo -H, wenn Sie npm install ausführen, um globale Pakete zu installieren.

-

Wenn Sie npm verwenden, werden Pakete in das Ausgangsverzeichnis des Benutzers heruntergeladen. Wenn Sie als Sudo ausgeführt werden, installiert npm Dateien in demselben Verzeichnis. Jetzt gehören sie root.

So passiert genau das mit jeder Person, die jemals npm verwendet hat:

  • installieren Sie einige lokale Pakete ohne Probleme mit npm install foo
  • installieren Sie das globale Paket mit Sudo install -g foo-cli ohne Probleme
  • versuch, lokales Paket mit npm install bar zu installieren
  • frustrieren Sie sich bei den npm-Designern, da Sie chmod ein Verzeichnis erneut aufrufen müssen

Wenn Sie die Option -i oder -H mit Sudo verwenden, ist Ihr Ausgangsverzeichnis das Ausgangsverzeichnis von root. Bei jeder globalen Installation werden Pakete in /root/.npm statt in root-Dateien unter /home/me/.npm zwischengespeichert.

Verwenden Sie immer Sudo -i oder Sudo -H, wenn Sie npm install ausführen, um globale Pakete zu installieren, und Ihre npm-Berechtigungsprobleme werden verschwinden.

Für immer.

http://hood.ie/blog/why-you-shouldnt-use-Sudo-with-npm.html

--q.v. die akzeptierte Antwort für das Reparieren einer bereits durchgeficketen npm.

8
rich remer

Für Mac (angenommen von Christoper Wills Antwort)

Mac OS X 10.9.4 

  1. Systemeinstellungen> Benutzer und Gruppen> (Entsperren)> + drücken: 

    Neuer Account> "Gruppe"
    Kontoname: nodegrp 

    Aktivieren Sie nach dem Erstellen der Gruppe den Benutzer, der in diese Gruppe aufgenommen werden soll

  2. Sudo chgrp -R Knotengrösse/usr/local/lib/node_modules /
    Sudo chgrp nodegrp/usr/bin/node
    Sudo chgrp nodegrp/usr/bin/npm
    Sudo chown -R $ (whoami): nodegrp ~/.npm

6
ken

In meinem Fall liegt es an der Erlaubnis von ~/tmp. Also mache ich:

Sudo chown -R $USER ~/tmp

Und es ist in Ordnung!

5
bnPYSse

Ich hatte ein ähnliches Problem bei NPM-Module werden nicht global ohne Sudo installiert , das Problem war, dass als ich Knoten installierte, ich es mit Sudo über chris/lea ppa repo tat.

Meine Lösung bestand darin, den Knoten zu deinstallieren und dann folgendermaßen zu installieren:

Laden Sie die neuesten stabilen Knotenquellen von nodejs.org in meinem Fall node-v0.10.20.tar.gz herunter

tar -zxf node-v0.10.20.tar.gz #uncompress sources

cd node-v0.10.20 #enter unkomprimierter Ordner

Sudo chown $ USER -R/usr/local

./configure --prefix =/usr/local && make && make installieren

PD: Wenn Sie den Besitz des Ordners/usr/local nicht ändern möchten, können Sie ihn an einem anderen Ort installieren, an dem Sie bereits arbeiten. Das Problem dieses Ansatzes ist, dass Sie den Installationsordner mit der Bash-Befehlszeile binden müssen, damit wir den Befehl node später verwenden können

mkdir ~/opt

./configure --prefix = ~/opt && make && make install

echo 'export PATH = ~/opt/bin: $ {PATH}' >> ~/.bashrc #oder ~/.profile oder ~/.bash_profile oder ~/.zshenv abhängig vom aktuellen Betriebssystem

Mit beiden Methoden können Sie ohne Sudo Folgendes tun

npm install -g module_to_install

5
HeberLZ

Falls Sudo chown -R $(whoami) ~/.npm für Sie nicht funktioniert hat oder Sie eine Befehlslösung ohne Terminal benötigen.

Das Problem ist, dass Ihr Benutzerkonto keine Schreibberechtigung für den node_modules-Ordner besitzt. Sie können also Folgendes tun 

  1. Öffnen Sie den Finder und drücken Sie cmd + shift + g. Dadurch öffnen Sie den Ordner mit der URL

  2. Schreiben Sie den folgenden Pfad /usr/local/lib/node_modules und drücken Sie auf "go"

  3. Klicken Sie mit der rechten Maustaste auf den Ordner node_modules und wählen Sie Get Info aus.

  4. Scrollen Sie nach unten zum Abschnitt sharing & permissions

  5. Entsperren, um Änderungen vornehmen zu können.

  6. Drücken Sie + und fügen Sie Ihr Benutzerkonto hinzu 

  7. Stellen Sie sicher, dass Sie Read & Write in der Dropdown-Liste für Berechtigungen auswählen

Jetzt sollten Sie Pakete ohne Sudo installieren können, und Berechtigungsprobleme sollten gelöst sein 

3
Amr Labib

Für mich nur ausführen

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

funktioniert nicht Dann werde ich auch ausführen

Sudo chown -R $(whoami) /usr/lib/node_modules/
Sudo chown -R $(whoami) /usr/bin/node
Sudo chown -R $(whoami) /usr/bin/npm

Und alles funktioniert gut!

3
user3753202

So habe ich das Problem unter Windows 8.1 gelöst:

  • Gehen Sie zu Ihrer nodejs-Installation (normalerweise C:\Programme\nodejs).
  • Klicken Sie mit der rechten Maustaste auf den Ordner node_modules und wechseln Sie zu den Eigenschaften
  • Klicken Sie auf die Registerkarte Sicherheit und dann auf Erweitert
  • Oben sehen Sie "Owner: SYSTEM", klicken Sie auf "Ändern"
  • Geben Sie den Benutzer ein, für den Sie Berechtigungen haben möchten, und klicken Sie auf OK
  • Aktivieren Sie das Kontrollkästchen am unteren Rand der erweiterten Einstellungen "Alle Berechtigungseinträge für untergeordnete Objekte durch vererbbare Berechtigungseinträge aus diesem Objekt ersetzen" und klicken Sie auf OK
  • Tun Sie, was auch immer Sie bei npm installieren/aktualisieren möchten
2
KCaradonna

Unter Mac OS X lautet der Installationspfad bei der Installation mit Homebrewsbrew install npm/usr/local/share/npm/ mit den Unterordnern bin/ und lib/node_modules/.

Wenn Sie diesen Befehl ausführen, um den Besitzer des derzeit angemeldeten Benutzers zu ändern, müssen Sie alle Änderungen vornehmen und die Installation von globalen NPM-Paketen ohne Sudo zulassen.

Sudo chown -R $USER ~/.npm /usr/local/share/npm/

osxHomebrew

2
Joel Purra

Problem: Sie haben keine Berechtigung zum Schreiben in die Verzeichnisse, die npm zum Speichern globaler Pakete und Befehle verwendet.

Lösung: Erlaube npm.

Öffnen Sie ein Terminal:

befehl + Leertaste, dann 'Terminal' eingeben

Geben Sie diesen Befehl ein: 

Sudo chown -R $ (whoami) $ (npm config get Präfix)/{lib/node_modules, bin, share}

  • Hinweis: Dies erfordert Ihr Passwort.

Diese Lösung erlaubt die Erlaubnis, NUR die benötigten Verzeichnisse zu erhalten, und die anderen Verzeichnisse bleiben schön und sicher.

2
Matt

ISSUE: Sie (der Benutzer) haben nicht die richtigen Berechtigungen für das Verzeichnis.

Die sofortige Möglichkeit besteht darin, die npm-Installation mit Sudo auszuführen. Dies kann jedoch zu demselben Fehler oder einer falschen Installation führen.

UND das Ändern des Verzeichnisbesitzers ist keine gute Option, ein temporärer Patch.


Lösung/Vorschlag: Ändern des Standardverzeichnisses von npm (von offiziellen docs )

Sichern Sie Ihren Computer, bevor Sie fortfahren.

(optional) Falls Sie eine fehlerhafte Installation haben, deinstallieren Sie diese zuerst:

npm uninstall <package-name>  # use Sudo if you used it while installation
npm cache verify  # or, npm cache clean for npm version below 5.x.x 
  1. Erstellen Sie ein Verzeichnis für globale Installationen: 

    mkdir ~/.npm-global

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

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

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

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

  4. Aktualisieren Sie in der Befehlszeile Ihre Systemvariablen oder starten Sie das Terminal erneut: 

    source ~/.profile

  5. (optional) Test: Laden Sie ein Paket global herunter, ohne Sudo zu verwenden.

    npm install -g jshint

2
Nabeel Ahmed

Wenn während der Installation von npm etwas Ähnliches angezeigt wird oder wenn Sie Pakete global auf einem Mac installieren möchten, verwenden Sie Sudo

npm ERR! Code EACCES
npm ERR! errno -13
npm ERR! Syscall-Zugriff

1
Ignatius Andrew

Eigentlich hatte ich auch das gleiche Problem. Ich habe Ubuntu laufen lassen. Mein Problem entsteht, weil ich meinen öffentlichen Schlüssel des Ubuntu verloren habe. Selbst das Aktualisieren meines Systems fand nicht statt. Es gab einen GPG-Fehler. In diesem Fall können Sie Ihren Schlüssel mit dem folgenden Befehl wiederherstellen:

Sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys <key in GPG error>

Danach funktioniert npm gut!

1
sam100rav

John Papa weist auf die Geschichte und die Hintergründe dieser Angelegenheit hin und gibt eine solide Lösung :

John Papas Schritte sind: 

  1. Verwenden Sie brew, um den Knoten ohne npm zu installieren
  2. Aktualisieren Sie Ihr .bash_profile/.bashrc, damit npm und node wissen, wo Pakete installiert werden sollen
  3. Verwenden Sie brew, um den Knoten zu aktualisieren, und npm, um sich selbst zu aktualisieren

Hoffe das hilft den Neugierigen!

1
theship

Die Antwort von @Yves M. war meiner Lösung sehr ähnlich. Hier sind die Befehle, die ich verwendet habe, die sich leicht von seinen unterscheiden.

curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.31.0/install.sh | bash

Dann fragen Sie nach der neuesten Version:

nvm ls-remote

Dann installiere die neueste Version:

nvm install YOUR_VERSION_HERE

beispiel

nvm install v5.8.0
0
Ryan Loggerythm

Ich löse es, indem Sie den Besitzer von root in meinen Benutzernamen ändern

Sudo chown -R me:me /home/me/.config/configstore/

Ändern Sie mich mit Ihrem Benutzernamen und Ihrer Gruppe.

0
Salem

Ich benutze gerne Ubuntu-Gruppen, um dies zu erreichen, anstatt den Besitzer zu wechseln. Es ist ganz einfach.

  1. Zuerst installiere nodejs und npm mit apt-get

    Sudo apt-get update && Sudo apt-get install nodejs npm

  2. Finden Sie heraus, wer angemeldet ist, z. B. Benutzername. Führen Sie den folgenden Befehl aus, um ihn im Terminal anzuzeigen

    whoami

  3. Sie können die Liste der Gruppen anzeigen, denen Sie zugewiesen sind, indem Sie einen sehr einfachen Befehl verwenden. Normalerweise ist die erste Gruppe Ihr Benutzername

    groups

  4. Führen Sie Folgendes aus, um dem angemeldeten Benutzer Zugriff zu gewähren

    Sudo chmod 777 -R /usr/local && Sudo chgrp $(whoami) -R /usr/local

  5. Aktualisiere npm und nodejs

    npm install -g npm

Sie sind fertig, Ihr Benutzer kann npm-Befehle ohne Sudo ausführen

Sie können auch auf diesen Link verweisen https://askubuntu.com/a/1115373/687804

0
Gitesh Dalal

Hier sind die Schritte im Detail ...

  • Installiere Node.js von nodejs.org/de/download

  • Update auf die neueste Version von npm: $ npm install npm -g

  • Erstellen Sie einen neuen Ordner für die globalen Pakete npm$ mkdir ~/.npm-packages

  • Teilen Sie npm mit, wo Sie sie finden/speichern können $ npm config set prefix ~/.npm-packages

Überprüfen Sie die Installation

# this should show the versions
node -v  
npm -v  
# this should show npm and ng with no errors
npm list -g --depth=0

Ich hoffe es funktioniert für Sie, es hat für mich funktioniert!

0
Carlos Abraham

Wenn das Ändern der Berechtigungen für das Verzeichnis /usr/local/lib/npm_modules Nicht hilfreich ist, sollten Sie Ihren Benutzer zur Gruppe hinzufügen (in den meisten Fällen handelt es sich um staff-Gruppe), die über rwx-Rechte für /usr/bin-Verzeichnis ..__ verfügt, da npm versucht, symlink mit /usr/bin/__package__ zu machen.

P.S. Vergessen Sie nicht, sich nach einem Benutzerwechsel erneut anzumelden

0
Victor Perov

Dies ist die Lösung, die ich verwendet und bearbeitet habe. Ich habe versucht, whoami zu verwenden, hat nie funktioniert.

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

dann

Sudo chown -R $USER /usr/local/bin/npm

dann

Sudo chown -R $USER /usr/local/bin/node

0
Casey Robinson

Was für mich die beste Option zu sein scheint, ist die in der npm-Dokumentation vorgeschlagene -, die zuerst überprüft, wo globale Knotenmodule standardmäßig installiert werden, indem npm config get prefix ausgeführt wird. Wenn Sie, wie ich es bei Trusty /usr erhalte, möchten Sie vielleicht einen Ordner ändern, den Sie sicher besitzen können, ohne die Dinge so zu verändern, wie ich es gemacht habe.

Wählen Sie dazu einen neuen Ordner in Ihrem System oder erstellen Sie einen neuen Ordner. Vielleicht möchten Sie es in Ihrem Home-Verzeichnis oder wie ich unter /usr/local für Konsistenz haben, da ich auch ein Mac-Benutzer bin (ich möchte nicht an verschiedenen Orten suchen, abhängig von der Maschine, vor der ich zufällig bin). . Ein weiterer guter Grund dafür ist die Tatsache, dass sich der /usr/local-Ordner wahrscheinlich bereits in PATH befindet (es sei denn, Sie möchten mit Ihrem PATH herumspielen), aber der neu erstellte Ordner ist wahrscheinlich nicht der Fall und Sie müssen ihn hinzufügen den PATH selbst in Ihrer .bash-profile - oder .bashrc -Datei.

Um es kurz zu machen: Ich habe den Standardspeicherort der globalen Module mit npm config set prefix '/usr/local' geändert, den Ordner /usr/local/lib/node_modules erstellt (wird von npm verwendet) und die Berechtigungen für die von npm verwendeten Ordner mit dem Befehl geändert: 

Sudo chown -R $(whoami) $(npm config get prefix)/{lib/node_modules,bin,share}

Jetzt können Sie jedes Modul global sicher installieren. Hoffe das hilft!

0
yago

du könntest es versuchen 

Sudo chown -R $(whoami) $(npm config get prefix)/{lib/node_modules,bin,share}
0

Um das NPM richtig zu konfigurieren, führen Sie die folgenden Befehle aus:

npm config set prefix '~/.npm_packages'
PATH=$PATH:$HOME/.npm_packages/bin; export PATH
0