Ich versuche LESS auf meinem Rechner zu installieren und habe bereits Knoten installiert. Wenn ich jedoch "node install -g less" eingebe, erhalte ich folgende Fehlermeldung und bin mir nicht sicher, was ich tun soll
FPaulMAC:bin paul$ npm install -g less
npm ERR! Error: EACCES, unlink '/usr/local/lib/node_modules/less'
npm ERR! { [Error: EACCES, unlink '/usr/local/lib/node_modules/less']
npm ERR! errno: 3,
npm ERR! code: 'EACCES',
npm ERR! path: '/usr/local/lib/node_modules/less' }
npm ERR!
npm ERR! Please try running this command again as root/Administrator.
npm ERR! System Darwin 13.3.0
npm ERR! command "node" "/usr/local/bin/npm" "install" "-g" "less"
npm ERR! cwd /usr/local/bin
npm ERR! node -v v0.10.33
npm ERR! npm -v 1.4.28
npm ERR! path /usr/local/lib/node_modules/less
npm ERR! code EACCES
npm ERR! errno 3
npm ERR! stack Error: EACCES, unlink '/usr/local/lib/node_modules/less'
npm ERR! error rolling back Error: EACCES, unlink '/usr/local/lib/node_modules/less'
npm ERR! error rolling back { [Error: EACCES, unlink '/usr/local/lib/node_modules/less']
npm ERR! error rolling back errno: 3,
npm ERR! error rolling back code: 'EACCES',
npm ERR! error rolling back path: '/usr/local/lib/node_modules/less' }
npm ERR! not ok code 0
Re Explosion Pills "Eine Installation kann beliebige Skripte ausführen und die Ausführung mit Sudo kann extrem gefährlich sein!"
Anscheinend ist Sudo der falsche Weg.
"Ändern Sie den Besitzer der Dateien in Ihrem/usr/local-Ordner in den aktuellen Benutzer:"
Sudo chown -R $USER /usr/local
Führen Sie dann die Installation aus
node install -g less
Auschecken:
Ehrlich gesagt ist dies ein schlechter Ratschlag von npm
. Eine Installation kann beliebige Skripte ausführen und die Ausführung mit Sudo
kann äußerst gefährlich sein! Sie könnten Sudo npm install -g less
tun, um es global zu installieren, aber stattdessen würde ich empfehlen, Ihre npm-Einstellungen zu aktualisieren:
#~/.npmrc
prefix=~/.npm_modules
Dann können Sie Ihren Pfad aktualisieren:
#~/.bashrc or ~/.zshrc, etc.
export PATH=$PATH:$HOME/.npm_modules/bin
Dann benötigen Sie keine root-Berechtigungen, um die Installation durchzuführen, und Sie können die Binärdatei trotzdem verwenden.
Dies würde jedoch nur für Ihren Benutzer gelten. Wenn Sie möchten, dass das gesamte System das Modul verwenden kann, müssen Sie alle dazu auffordern, Ihren Pfad hinzuzufügen. Kompliziertere und robustere Lösungen umfassen das Hinzufügen eines Ordners mit Knotenmodulen/-binärdateien, in den eine Gruppe installiert werden kann, und that zum Pfad aller Benutzer hinzufügen.
Stellen Sie einfach Sudo
am Anfang Ihres Befehls vor . Wie bereits erwähnt, werden bei der Installation einige Skripts ausgeführt, die gefährlich sein können.
Sudo npm install -g less
ausführen
Dies wird definitiv helfen. Antwort per npm selbst. https://docs.npmjs.com/getting-started/fixing-npm-permissions
Das Folgende wird zur Vereinfachung aus der URL extrahiert.
Option 1: Ändern Sie die Berechtigung in das Standardverzeichnis von npm
Finden Sie den Pfad zum Verzeichnis von npm:
npm config get prefix
Für viele Systeme ist dies/usr/local.
WARNUNG: Wenn der angezeigte Pfad nur/usr lautet, wechseln Sie zu Option 2, da Sie sonst Ihre Berechtigungen verlieren.
Ändern Sie den Besitzer der Verzeichnisse von npm 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 von npm und einigen anderen Tools (lib/node_modules, bin und share) verwendeten Unterordner geändert.
Option 2: Ändere das Standardverzeichnis von npm in ein anderes Verzeichnis
Erstellen Sie ein Verzeichnis für globale Installationen:
mkdir ~/.npm-global
Konfigurieren Sie npm so, dass der neue Verzeichnispfad verwendet wird:
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 Ihre Systemvariablen wieder in der Befehlszeile:
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
Option 3: Verwenden Sie einen Paketmanager, der dies für Sie erledigt
Wenn Sie eine Neuinstallation von Node unter Mac OS durchführen, können Sie dieses Problem mithilfe des Homebrew-Paket-Managers vollständig vermeiden. Homebrew richtet die Dinge mit den richtigen Berechtigungen sofort ein.
brew install node
Dies war das, was ich tun musste, um mit einem Less-Compiler zu beginnen, um Probleme zu vermeiden, die im OP erwähnt wurden:
Sudo npm install npm -g
Sudo npm install -g less
(der Sudo macht den Unterschied)/usr/local/bin/lessc
In meinem Fall musste ich die npm-Version von 5.3.0 → 5.4.2 aktualisieren.
Bevor ich diesen -- npm i -g npm
.. verwenden konnte, musste ich zwei Befehle ausführen, die mein Problem perfekt lösten. Es ist sehr wahrscheinlich, dass Ihr Problem dadurch sogar gelöst wird.
Schritt 1: Sudo chown -R $USER /usr/local
Schritt 2: npm install -g cordova ionic
Danach sollten Sie Ihr npm auf die neueste Version aktualisieren
Schritt 3: npm i -g npm
Dann bist du gut zu gehen. Hoffe, das löst dein Problem ...
npm hat eine offizielle Seite über Festlegen von npm-Berechtigungen , wenn der Fehler EACCES (Fehler: Zugriff) angezeigt wird Die Seite hat sogar ein Video.
Sie können dieses Problem mit einer der beiden Optionen beheben:
- Ändern Sie die Berechtigung in das Standardverzeichnis von npm.
- Ändern Sie das Standardverzeichnis von npm in ein anderes Verzeichnis.
Ich habe auch das Problem. Das habe ich gemacht:
Gehen Sie nun zur nodeJS-Site und installieren Sie sie erneut. Wählen Sie die zweite Option in der Installationsoption (dh das npm-Paket). Es installieren. Ihr Problem muss jetzt gelöst sein.
Ich weiß, dass dies eine alte Frage ist, aber keine der Lösungen schien eine gute Praxis zu sein, daher sage ich, wie ich dieses Problem gelöst habe:
Es wurde versucht, dieses Problem mithilfe von Homebrew zu lösen, es wurde jedoch auch der Knoten in /usr/local directory
Installiert, was erneut den Fehler EACCES
verursachen würde.
Musste einen Versionsmanager wie nvm verwenden. Weitere Informationen finden Sie im offiziellen npm guide .
Für verschiedene Betriebssystem .
nvm installiert den Node und seine Module im HOME FOLDER des Benutzers , wodurch Probleme mit EACCES
behoben werden.