Was könnte den Fehler verursachen Error: EACCES: permission denied, access '/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! errno: -13,
npm ERR! code: 'EACCES',
npm ERR! syscall: 'access',
npm ERR! path: '/usr/local/lib/node_modules' }
npm ERR!
npm ERR! Please try running this command again as root/Administrator.
npm ERR! A complete log of this run can be found in:
npm ERR! /Users/macbookmd101/.npm/_logs/2018-02-21T16_26_08_421Z-debug.log
Antworten:
Ändern Sie Ihre Dateiberechtigungen .. so
Überprüfen Sie zuerst, wem das Verzeichnis gehört
Der Zugriff wird verweigert, da der Ordner node_module dem Root gehört
Dies muss also geändert werden, indem Sie root in Ihren Benutzer ändern, aber zuerst den folgenden Befehl ausführen, um Ihren aktuellen Benutzer zu überprüfen. Wie erhalte ich den Namen des aktiven Benutzers über die Befehlszeile in OS X?
ODER
whoami
dann den Besitzer wechseln
ODER
ODER
quelle
sudo chown -R myuser:Company\\Domain\ Users /usr/local/lib/node_modules
. Um den Gruppennamen, den ich gemacht habe, richtig aufzulistenid -gn myuser
.illegal group name
. Also habe ich den Befehl in geändertsudo chown -R ownerName: /usr/local/lib/node_modules
und es hat funktioniert.chown
. github.com/nvm-sh/nvmUm die Wahrscheinlichkeit von Berechtigungsfehlern zu minimieren, können Sie npm so konfigurieren, dass ein anderes Verzeichnis verwendet wird. In diesem Beispiel erstellen und verwenden Sie ein verstecktes Verzeichnis in Ihrem Ausgangsverzeichnis.
Mach ein Backup von deinem Computer. 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
Installieren Sie zum Testen Ihrer neuen Konfiguration ein Paket global, ohne sudo zu verwenden
quelle
npm config set prefix
(insbesondere, wenn Sie ein Nicht-Root-Installationsprogramm schreiben), können Sie alternativ diePREFIX
env-Variable überschreiben oder die--prefix
Option bereitstellen , die beide gleichbedeutend mit sindnpm config set prefix
. (nicht sicher, welche welche überschreibt)Sie müssen lediglich USER zum Eigentümer von / local / lib hinzufügen
quelle
chown
Sie oben laufen , besteht ein hohes Risiko, dass die Berechtigungsstruktur Ihres gesamten Dateisystems zerstört wird.sudo chmod -R 777 /
.Versuchen Sie, sudo vor dem Befehl anzuhängen, den Sie versuchen.
so: sudo npm installieren
Wenn Sie sudo mit einem Befehl unter Linux / UNIX verwenden, werden Ihre Berechtigungen im Allgemeinen auf Superuser-Ebenen erhöht. In Windows wird das Superuser-Konto normalerweise als "Administrator" bezeichnet. Unter Linux / Unix heißt das Superuser-Konto im Allgemeinen "root".
Der Root-Benutzer hat die Berechtigung, auf fast alle Dateien auf Ihrem Computer zuzugreifen, diese zu ändern oder zu löschen. Normale Benutzerkonten können auf viel weniger Dateien zugreifen, diese ändern oder löschen. Die Einschränkungen eines normalen Kontos schützen Ihren Computer vor nicht autorisierten oder schädlichen Programmen oder Benutzern. Bei einigen Prozessen müssen Sie Aktionen für Dateien oder Ordner ausführen, auf die Sie normalerweise keine Zugriffsberechtigung haben. Die Installation eines Programms, auf das jeder zugreifen kann, ist eine dieser Aktionen.
In Ihrem Fall erhalten Sie durch Ausführen des Installationsbefehls mit sudo die Berechtigungen des Superusers und können Dateien ändern, zu deren Änderung Ihr normaler Benutzer keine Berechtigung hat.
quelle
Ich habe versucht, die Antwort von @okanda zu lösen, aber es hat bei mir nicht funktioniert.
Es hat jedoch perfekt funktioniert, als ich es für mehrere Ordner gemacht habe, wie in diesem Thread erwähnt: https://github.com/angular/angular-cli/issues/9676#issuecomment-464857493
quelle
Während der Installation globaler Pakete in Ubuntu benötigen Sie spezielle Schreibberechtigungen, wenn Sie in den
usr/bin
Ordner schreiben . Es ist aus Sicherheitsgründen. Verwenden Sie also jedes Mal, wenn Sie ein globales Paket installieren, Folgendes:Für Ihren speziellen Fall ist es:
quelle
Es sieht so aus, als würden Sie auf Berechtigungsprobleme stoßen. Wenn Sie installieren
npm-packages
, wird möglicherweise eineEACCES
Fehlermeldung angezeigt, wenn Sie versuchen, ein Paket global zu installieren. Dies bedeutet, dass Sie keine Berechtigung zum Schreiben in die Verzeichnisse haben,npm
die zum Speichern globaler Pakete und Befehle verwendet werden.Versuchen Sie, Befehle auszuführen:
sudo chmod u+x -R 775 ~/.npm
undsudo chown $USER -R ~/.npm
oder Sie können einfach einen beliebigennpm
Befehl mit ausführensudo
, um Ihr Problem zu beheben.Wenn Sie ein
npm-package
lokal installieren , sollten Sie sich in Ihrem lokalen Projektverzeichnis befinden und versuchen, densudo npm install <pkg-name>
Befehl auszuführen, um das erforderliche Paket zu installieren. Der Zweck der Verwendungsudo
besteht darin, dass die Berechtigungen Ihres Besitzers geändert werden, sodass Sie Ihren aktuellen Benutzer zum Ausführen vonnpm
Befehlen autorisieren können.Ich würde Ihnen empfehlen, einen Blick auf https://docs.npmjs.com/getting-started/fixing-npm-permissions zu werfen
quelle
Ich habe versucht, React Expo zu installieren und abgesehen von Sudo musste ich --unsafe-perm hinzufügen
so was. Dies löst mein Problem
quelle
Wenn Sie dieses Problem auf Ihrem Mac haben. Folge diesen Schritten
Überprüfen Sie zunächst mit dem folgenden Befehl, wer Eigentümer dieser Datei ist
Sie finden eine Datei wie unten, eine davon ist unten
Haben Sie bemerkt, dass die obige Datei von root stammt, um Änderungen im Inneren vorzunehmen, müssen Sie das Eigentümerschiff ändern.
Mit diesem Befehl können Sie überprüfen, wer der aktuelle Benutzer ist
und dann können Sie ändern, indem Sie diesen Befehl aufrufen (ersetzen Sie einfach Ihren Benutzernamen durch ownerName)
In meinem Fall, wie Sie wissen, ist der Benutzer "yamsol". Ich werde diesen Befehl auf diese Weise aufrufen
das ist es.
quelle
Seien Sie vorsichtig mit allen Antworten, die den Besitzer aller Verzeichnisse unter / usr / local ändern. Verwirren Sie das Linux-System grundsätzlich nicht !!!
Ich denke, der beste Weg ist, einen eigenen Ordner zu verwenden, um alle globalen Pakete zu finden: https://www.competa.com/blog/how-to-run-npm-without-sudo/
quelle
Sie können npm über den Node-Versionsmanager oder ein Node-Installationsprogramm installieren. In den Dokumenten heißt es:
Da Sie den Berechtigungsfehler haben , haben Sie npm wahrscheinlich über ein Node-Installationsprogramm installiert und müssen es jetzt mit einem nvm (Node Version Manager) neu installieren.
Zum Glück ist das sehr einfach. Sie müssen nicht einmal Ihre aktuelle Version von npm oder Node.js entfernen.
Alles was Sie tun müssen, ist
Installieren Sie nvm. Für OSX- oder Linux-Knoten verwenden Sie:
Dadurch wird ein NVM-Ordner in Ihrem Home-Verzeichnis erstellt.
Dann
Installieren Sie npm und node.js über nvm. Rufen Sie dazu einfach an
Jetzt können Sie Ihr Paket global , ohne installieren
sudo
oder das Ändern der Besitzernode_modules
inusr
Ordner.quelle
fish
, um die Arbeit richtig NVM Bedürfnisse ein Fisch-Wrapper github.com/FabioAntunes/fish-nvmVerwenden Sie diesen Befehl, um als sudo-Benutzer zu installieren
npm
:anstelle von npm installiere -g create-react-a pp.
quelle
Ich konnte das Problem mit dem folgenden Mac beheben.
quelle
Für NVM-Benutzer
und
Ersetzen Sie
v8.9.1
durch die von Ihnen verwendete Knotenversion.quelle
sudo chown -R $USER home/samuel/.nvm/versions/node/v8.10.0/lib/node_modules
Anscheinend haben Sie versucht, ein npm-Paket global und nicht lokal zu installieren, wie im Folgenden
man npm install
beschrieben:Wenn Sie ein npm-Projekt einrichten (unter anderem), ist es im Allgemeinen keine gute Idee, Pakete auf den globalen Modulen von Node.j (/ usr / local / lib / node_modules) als Debug-Protokoll zu installieren empfohlen.
Anstatt zu verwenden
-g
, verwenden Sie--save
, wodurch das Paket automatisch als Abhängigkeit für Ihrepackage.json
Datei gespeichert wird:So was:
Aber wie in den anderen Antworten erwähnt, müssen Sie bei der Ausführung ( wenn Ihr Benutzer über Sudo-Berechtigungen verfügt: siehe / etc / sudoers ) verwenden, wenn
-g
Sie diese verwenden möchten. In der Tat ist dies jedoch keine gute Idee, was möglicherweise zu Berechtigungsproblemen führen kann.sudo
npm install express-generator -g
BEACHTEN
Es gibt Anweisungen zur Installation
express-generator
mit-g
Option, damit das Skript im Systempfadexpress-cli.js
verfügbar ist. Sie können jedoch auch das lokal installierte Skript verwenden, das sich imnode_modules
if your npm-Projekt befindet:IMHO, verwenden
-g
(auch verwendensudo
) ist wie hic sunt dracones , wenn Sie sich über die Konsequenzen nicht sicher sind.Für weitere Informationen:
quelle
Dies ist darauf zurückzuführen, dass Sie
npm
nichtnode_modules
lokal auf Ihr globales Verzeichnis zugreifen könnenz.B
behebt das Problem, jetzt können Sie den Befehl ausführen, den Sie erneut ausgeführt haben.
quelle
Sie können einfach den Besitzer wechseln oder einfach sudo verwenden, bevor Sie einen solchen Befehl erteilen
sudo chown -R [owner]:[owner] /usr/local/lib/node_modules
( Besitzer wechseln )oder
das ist es.
quelle
Für Linux / Ubuntu, wenn der Befehl
npm install -g <package_name>
Fix: Installation mit Root-Berechtigungen
sudo npm install <package_name> -g
quelle
Sie benötigen die Erlaubnis der Superuser-Levels, um React zu installieren. Unter Linux / Unix heißt das Superuser-Konto im Allgemeinen "root".
Um die Superuser-Berechtigung zu erhalten, führen Sie einfach den folgenden Befehl auf Ihrem Terminal aus:
Führen Sie dann einfach den Befehl aus, um React zu installieren:
Das Team von reactjs empfiehlt uns jedoch, den folgenden Befehl zu verwenden, anstatt ein globales Paket zu installieren.
quelle
create-react-app
benötigen Root-Berechtigungen, um als globale Pakete installiert zu werden. Andernfalls können Sie es nicht installieren. Das Team von reactjs empfiehlt uns jedoch, den folgenden Befehl zu verwenden,npx create-react-app app_name
anstatt ein globales Paket zu installieren.sudo chown -R $ USER / usr / local / lib / node_modules
quelle
Hat nur das geholfen :
quelle
Nach langer Recherche habe ich verstanden, dass für Mac OS nichts erforderlich ist, um Angular Cli zu installieren. Verwenden
sudo npm install -g @angular/cli
Sie einfach Ihr Terminal. Sie werden aufgefordert, ein Passwort einzugeben. Geben Sie Ihr Passwort ein. Es wird mit der Installation von Cli fortgefahren. Es hat bei mir funktioniert.quelle
Ähnlich wie bei POsha, aber das hat bei Ubuntu 19 für mich funktioniert
Von diesem Link
https://github.com/inconshreveable/ngrok/issues/429
quelle
Wenn Sie Linux verwenden (dh: Arch)
Standardmäßig installiert dieser Befehl das Paket unter / usr / lib / node_modules / npm und erfordert dazu Root-Rechte.
Benutzerweite Installationen zulassen
Legen Sie die
npm_config_prefix
Umgebungsvariable fest, um globale Paketinstallationen für den aktuellen Benutzer zuzulassen . Dies wird sowohl von npm als auch von Garn verwendet.Melden Sie sich erneut an oder geben Sie die Quelle ein, um die Änderungen zu aktualisieren.
Sie können auch den
--prefix
Parameter für angebennpm install
. Dies wird jedoch nicht empfohlen, da Sie es jedes Mal hinzufügen müssen, wenn Sie ein globales Paket installieren.Sie müssen also keine Ordnerberechtigung festlegen
quelle
Ich konnte dieses Problem beheben
nvm
, indem ich den Knoten installierte und dann auf die neueste Version stellte.nvm
mitcurl
(für die neueste Version gehen Sie zu nvm.sh )Nachdem Sie die obigen Befehle befolgt haben, können Sie React / Angular in Ubuntu installieren.
quelle
Verwenden Sie 'sudo npm install xyz', es wird funktionieren.
quelle
Fügen Sie einfach "sudo" vor dem Befehl npm hinzu. Das ist es.
quelle
Ich habe sudo verwendet, aber es hat das Problem nicht gelöst. Ich habe das Problem durch Ändern der Ordnerberechtigung node_modules behoben.
Wenn Sie möchten, können Sie 777 durch einen anderen Code ersetzen, wenn Sie nicht die Berechtigung für alle Benutzer / Gruppen festlegen.
quelle
Für diejenigen unter Ihnen, die das Problem nach Verwendung der oben genannten Lösungen immer noch nicht beheben können. Versuche dies
Das sollte den Trick machen, Prost!
quelle