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

298

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
hendra dedi
quelle
9
Siehe den offiziellen Leitfaden von NPM, wie dies behoben werden kann
Dzhuneyt

Antworten:

486

Ändern Sie Ihre Dateiberechtigungen .. so

Überprüfen Sie zuerst, wem das Verzeichnis gehört

ls -la /usr/local/lib/node_modules

Der Zugriff wird verweigert, da der Ordner node_module dem Root gehört

drwxr-xr-x   3 root    wheel  102 Jun 24 23:24 node_modules

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?

id -un

ODER

whoami

dann den Besitzer wechseln

sudo chown -R [owner]:[owner] /usr/local/lib/node_modules

ODER

sudo chown -R ownerName: /usr/local/lib/node_modules

ODER

sudo chown -R $USER /usr/local/lib/node_modules
okandas
quelle
3
Es gab Fälle, in denen das Hinzufügen von sudo im Befehl ebenfalls nicht funktionierte. Dies funktionierte für mich und sollte als Antwort akzeptiert werden.
Niroj Shr
1
Mein Unternehmen verwendet Microsoft Active Directory Single Sign On. Der Gruppenname enthält also Schrägstriche und ein Leerzeichen. Das macht es etwas schwieriger. Der Befehl, den ich benutzte, war sudo chown -R myuser:Company\\Domain\ Users /usr/local/lib/node_modules. Um den Gruppennamen, den ich gemacht habe, richtig aufzulisten id -gn myuser.
Patrick
44
Dies war hilfreich, aber als ich den Befehl zum Ändern des Besitzers ausführte, bekam ich illegal group name. Also habe ich den Befehl in geändert sudo chown -R ownerName: /usr/local/lib/node_modulesund es hat funktioniert.
Midori
4
Obwohl dies die richtige Antwort ist, bin ich mehrmals auf dieses Problem gestoßen, und die bessere Lösung ist die Verwendung von nvm. Auf diese Weise müssen Sie den Dateibesitzer nicht mit ändern chown. github.com/nvm-sh/nvm
Roee
1
Anstatt die Berechtigung zu ändern, wird in den Dokumenten empfohlen, npm mit nvm zu installieren. Siehe stackoverflow.com/a/59575266/2311074
Adam
105

Um 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

Naveen Raju
quelle
18
Dies ist meiner Meinung nach die am wenigsten zerstörerische Option. Es wird auch auf der npm-Website empfohlen .
17xande
Wenn Sie dies nicht möchten npm config set prefix(insbesondere, wenn Sie ein Nicht-Root-Installationsprogramm schreiben), können Sie alternativ die PREFIXenv-Variable überschreiben oder die --prefixOption bereitstellen , die beide gleichbedeutend mit sind npm config set prefix. (nicht sicher, welche welche überschreibt)
SOFe
Das hat bei mir perfekt funktioniert. Meiner Meinung nach bietet diese Antwort den geringsten Raum für destruktive Fehler und ist sehr einfach zu verstehen und umzusetzen.
Uhr
1
Das ist es, wonach gesucht wurde! Vielen Dank.
Djangodude
Dies ist die empfohlene Lösung und langfristig die beste.
Al-Mothafar
49

Sie müssen lediglich USER zum Eigentümer von / local / lib hinzufügen

sudo chown -R $USER /usr/local/lib
Nizar
quelle
7
Wenn zukünftige Leser die Berechtigungen nicht verstehen, lesen Sie bitte die NPM-Dokumentation zur offiziellen Dokumentation und beheben Sie das Problem ordnungsgemäß. docs.npmjs.com/… . Insbesondere sollten zukünftige Leser npm
ordonezalex
1
Das ist ziemlich einfach. Es bedeutet auch, dass Sie sich nie wieder um irgendetwas in der Bibliothek kümmern müssen. Sie besitzen / usr / local / lib.
Obinna Nnenanya
4
Dies ist überhaupt keine gute Lösung. Wenn chownSie oben laufen , besteht ein hohes Risiko, dass die Berechtigungsstruktur Ihres gesamten Dateisystems zerstört wird.
Lars
3
Dieser Befehl hat alle meine Berechtigungen ruiniert. Müssen alle Dinge wieder erholen.
Azam Alvi
4
Um genau zu sein, wird hier kein Eigentümer hinzugefügt . Dies ändert den Besitzer, was weitaus destruktiver ist als nur das Hinzufügen und fast so destruktiv wie sudo chmod -R 777 /.
SOFe
29

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.

Pradeep Kumar HK
quelle
57
Vermeiden Sie die Verwendung von sudo während der Installation von npm-Paketen. Je tiefer Sie mit einem solchen Weg gehen, desto schwieriger wird es, ihn danach zu reparieren. Ändern Sie einfach die Berechtigungen in den Ordner "npm", wie in einer anderen Antwort angegeben, und führen Sie ein besseres Leben.
Lukas Liesis
2
Das mag funktionieren, wird aber im Laufe der Zeit zu kontinuierlichen Problemen führen. Vermeiden Sie dies, wenn Sie nicht alle Arten von Berechtigungsfehlern erhalten möchten. Wie verweigert, um npm Cache-Ordner, verweigert zu installieren und so weiter.
Lukas Liesis
1
Diese Antwort sollte entfernt werden, da die Verwendung von sudo vor der Installation von Paketen einen sehr gefährlichen Präzedenzfall darstellt, wenn der Benutzer die Berechtigungen nicht versteht. Bitte beziehen Sie sich auf die erste Antwort, in der Sie den Eigentümer des Kernknotenstandorts einmal ändern.
SeaWarrior404
19

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

sudo chown -R $USER /usr/local/lib/node_modules/
sudo chown -R $USER /usr/local/bin/
sudo chown -R $USER /usr/local/share/
QUentin
quelle
Danke, diese Antwort hat mir geholfen. Ubuntu 18.04.3
bakhti_UZB
Ich hatte vorher andere Lösungen, aber aus irgendeinem Grund waren diesmal alle erforderlich, um Ordner zu bearbeiten. Vielen Dank. Mac v 10.15.2
Amir5000
1
Ist es sicher, auf dem Produktionsserver ausgeführt zu werden?
Cheezey
16

Während der Installation globaler Pakete in Ubuntu 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 ist es:

sudo npm install -g typescript
cinobili19
quelle
14

Es sieht so aus, als würden Sie auf Berechtigungsprobleme stoßen. Wenn Sie installieren npm-packages, wird möglicherweise eine EACCESFehlermeldung angezeigt, wenn Sie versuchen, ein Paket global zu installieren. Dies bedeutet, dass Sie keine Berechtigung zum Schreiben in die Verzeichnisse haben, npmdie zum Speichern globaler Pakete und Befehle verwendet werden.

Versuchen Sie, Befehle auszuführen: sudo chmod u+x -R 775 ~/.npmund sudo chown $USER -R ~/.npmoder Sie können einfach einen beliebigen npmBefehl mit ausführen sudo, um Ihr Problem zu beheben.

Wenn Sie ein npm-packagelokal installieren , sollten Sie sich in Ihrem lokalen Projektverzeichnis befinden und versuchen, den sudo npm install <pkg-name>Befehl auszuführen, um das erforderliche Paket zu installieren. Der Zweck der Verwendung sudobesteht darin, dass die Berechtigungen Ihres Besitzers geändert werden, sodass Sie Ihren aktuellen Benutzer zum Ausführen von npmBefehlen autorisieren können.

Ich würde Ihnen empfehlen, einen Blick auf https://docs.npmjs.com/getting-started/fixing-npm-permissions zu werfen

Suhas Gavad
quelle
10

Ich habe versucht, React Expo zu installieren und abgesehen von Sudo musste ich --unsafe-perm hinzufügen

so was. Dies löst mein Problem

sudo npm install -g expo-cli --unsafe-perm
Furquan
quelle
@ Furquan, vielen Dank ... Es hat bei mir funktioniert, nachdem ich verschiedene Lösungen ausprobiert hatte.
AzeTech
@AzeTech, ich bin froh, dass es geholfen hat: D
Furquan
9

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

ls -la /usr/local/lib/node_modules

Sie finden eine Datei wie unten, eine davon ist unten

drwxr-xr-x   3 root    wheel  768 May 29 02:21 node_modules

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

id -un (in my case user is yamsol)

und dann können Sie ändern, indem Sie diesen Befehl aufrufen (ersetzen Sie einfach Ihren Benutzernamen durch ownerName)

sudo chown -R ownerName: /usr/local/lib/node_modules

In meinem Fall, wie Sie wissen, ist der Benutzer "yamsol". Ich werde diesen Befehl auf diese Weise aufrufen

sudo chown -R yamsol: /usr/local/lib/node_modules

das ist es.

Adnan javte
quelle
8

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/

Angelcervera
quelle
8

Sie können npm über den Node-Versionsmanager oder ein Node-Installationsprogramm installieren. In den Dokumenten heißt es:

Die Verwendung eines Knoteninstallationsprogramms wird nicht empfohlen, da der Knoteninstallationsprozess npm in einem Verzeichnis mit lokalen Berechtigungen installiert und Berechtigungsfehler verursachen kann, wenn Sie npm-Pakete global ausführen.

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

  1. Installieren Sie nvm. Für OSX- oder Linux-Knoten verwenden Sie:

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

    Dadurch wird ein NVM-Ordner in Ihrem Home-Verzeichnis erstellt.

Dann

  1. Installieren Sie npm und node.js über nvm. Rufen Sie dazu einfach an

    nvm install stable

Jetzt können Sie Ihr Paket global , ohne installieren sudooder das Ändern der Besitzer node_modulesin usrOrdner.

Adam
quelle
Danke für die Antwort Adam! Sie fragen sich nur, welche möglichen Komplikationen später beim Einrichten des Builds / der Umgebung auftreten können.
吖 奇 说 - 何魏奇 Archy Will He
auch zu erarbeiten, für die Menschen auf fish, um die Arbeit richtig NVM Bedürfnisse ein Fisch-Wrapper github.com/FabioAntunes/fish-nvm
吖奇说-何魏奇Archy wird er
@ 吖 奇 说 ARCHYSHUō Ich habe noch nie von Komplikationen bei der Installation eines Knotens mit nvm gehört. Und da es aus den offiziellen Dokumenten empfohlen wird, scheint es mir der beste Weg zu sein :)
Adam
7

Verwenden Sie diesen Befehl, um als sudo-Benutzer zu installieren npm :

sudo npm install -g create-react-app 

anstelle von npm installiere -g create-react-a pp.

Nimmi Verma
quelle
Zitieren von @ Lukas - Verwenden von sudo während der Installation von npm-Paketen. Je tiefer Sie mit einem solchen Weg gehen, desto schwieriger wird es, ihn danach zu reparieren. Ändern Sie einfach die Berechtigungen in den Ordner "npm", wie in einer anderen Antwort angegeben, und führen Sie ein besseres Leben.
जयते जयते
6

Ich konnte das Problem mit dem folgenden Mac beheben.

sudo npm install -g @aws-amplify/cli --unsafe-perm=true
posha
quelle
6

Für NVM-Benutzer

sudo chown -R $USER /home/bereket/.nvm/versions/node/v8.9.1/lib/node_modules 

und

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

Ersetzen Sie v8.9.1durch die von Ihnen verwendete Knotenversion.

bereket gebredingle
quelle
Das hat bei mir nicht funktioniert! Immer noch der Fehler: npm ERR! Fehler: EACCES: Berechtigung verweigert, benennen Sie /home/samuel/.nvm/versions/node/v8.10.0/lib/node_modules/.staging/npm-90fab7c7/node_modules/columnify/node_modules/wcwidth/node_modules/defaults um Etwas mit /.staging ..diesem Ordner existiert nach dem Installationsversuch nicht. Kannst du mir damit helfen?
Samuel
@Samuel hast du diesen Befehl ausgeführt? sudo chown -R $USER home/samuel/.nvm/versions/node/v8.10.0/lib/node_modules
bereket gebredingle
5

Anscheinend haben Sie versucht, ein npm-Paket global und nicht lokal zu installieren, wie im Folgenden man npm installbeschrieben:

Das Argument -g oder --global bewirkt , dass npm das Paket global und nicht lokal installiert.

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 Ihre package.jsonDatei gespeichert wird:

So was:

$ npm install express-generator --save

$ cat package.json 
{
  "name": "first_app_generator",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
},
  "author": "ivanleoncz",
  "license": "MIT",
  "dependencies": {
    "express-generator": "^4.16.0"
  }
}

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 -gSie diese verwenden möchten. In der Tat ist dies jedoch keine gute Idee, was möglicherweise zu Berechtigungsproblemen führen kann.sudonpm install express-generator -g

BEACHTEN

Es gibt Anweisungen zur Installation express-generatormit -gOption, damit das Skript im Systempfad express-cli.jsverfügbar ist. Sie können jedoch auch das lokal installierte Skript verwenden, das sich im node_modulesif your npm-Projekt befindet:

$ ./node_modules/express-generator/bin/express-cli.js --view=pug myapp

Wenn eine Nachricht wie / usr / bin / env: 'node': Keine solche Datei oder kein solches Verzeichnis angezeigt wird, installieren Sie nodejs-legacy(Debian / Ubuntu)

IMHO, verwenden -g(auch verwenden sudo) ist wie hic sunt dracones , wenn Sie sich über die Konsequenzen nicht sicher sind.

Für weitere Informationen:

ivanleoncz
quelle
4

Dies ist darauf zurückzuführen, dass Sie npmnicht node_moduleslokal auf Ihr globales Verzeichnis zugreifen können

sudo chown -R Name: /usr/local/lib/node_modules

z.B

sudo chown -R developerayo: /usr/local/lib/node_modules

behebt das Problem, jetzt können Sie den Befehl ausführen, den Sie erneut ausgeführt haben.

Shodipo Ayomide
quelle
3

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

sudo npm install -g json-server

das ist es.

Shahid Jafrey
quelle
3

Für Linux / Ubuntu, wenn der Befehl

npm install -g <package_name>

npm WARN deprecated superagent@4.1.0: Please note that v5.0.1+ of superagent removes User-Agent header by default, therefore you may need to add it yourself (e.g. GitHub blocks requests without a User-Agent header).  This notice will go away with v5.0.2+ once it is released.

npm ERR! path ../lib/node_modules/<package_name>/bin/..

npm ERR! code EACCES

npm ERR! errno -13

npm ERR! syscall symlink

npm ERR! Error: EACCES: permission denied, symlink '../lib/node_modules
/<package_name>/bin/..' -> '/usr/local/bin/<package_name>'

npm ERR!  { [Error: EACCES: permission denied, symlink '../lib/node_modules/<package_name>/bin/..' -> '/usr/local/bin/<package_name>']

npm ERR!   cause:
npm ERR!    { Error: EACCES: permission denied, symlink '../lib/node_modules/<package_name>/bin/..' -> '/usr/local/bin/<package_name>'

npm ERR!      errno: -13,

npm ERR!      code: 'EACCES',

npm ERR!      syscall: 'symlink',

npm ERR!      path: '../lib/node_modules/<package_name>/bin/..',
npm ERR!      dest: '/usr/local/bin/ionic' },

npm ERR!   stack:
npm ERR!    'Error: EACCES: permission denied, symlink \'../lib/node_modules/ionic/bin/ionic\' -> \'/usr/local/bin/ionic\'',

npm ERR!   errno: -13,

npm ERR!   code: 'EACCES',

npm ERR!   syscall: 'symlink',

npm ERR!   path: '../lib/node_modules/<package-name>/bin/<package-name>',

npm ERR!   dest: '/usr/local/bin/<package-name>' }

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!     /home/User/.npm/_logs/2019-07-29T01_20_10_566Z-debug.log

Fix: Installation mit Root-Berechtigungen

sudo npm install <package_name> -g

Srilakshmy Krishnan
quelle
3

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:

sudo -i

Führen Sie dann einfach den Befehl aus, um React zu installieren:

npm install -g create-react-app

Das Team von reactjs empfiehlt uns jedoch, den folgenden Befehl zu verwenden, anstatt ein globales Paket zu installieren.

npx create-react-app app_name
Fatema T. Zuhora
quelle
1
Die Verwendung von sudo ist ein riskantes Unterfangen. Einige Pakete sind möglicherweise sicher, andere machen sich möglicherweise auf den Weg, um etwas anderes zu tun und die von Ihnen gewährten Root-Berechtigungen zu nutzen. sudo führt die nachfolgenden Befehle als Superuser aus
rustyDev
Einige Pakete create-react-appbenö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_nameanstatt ein globales Paket zu installieren.
Fatema T. Zuhora
3

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

Joe Cutter
quelle
2

Hat nur das geholfen :

sudo chown -R ownerName: /usr/local/lib/node_modules
nicolas asinovich
quelle
2

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/cliSie 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.

Hemanth Paluri
quelle
2

Wenn Sie Linux verwenden (dh: Arch)

# npm -g install packageName

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_prefixUmgebungsvariable fest, um globale Paketinstallationen für den aktuellen Benutzer zuzulassen . Dies wird sowohl von npm als auch von Garn verwendet.

~/.profile
PATH="$HOME/.node_modules/bin:$PATH"
export npm_config_prefix=~/.node_modules

Melden Sie sich erneut an oder geben Sie die Quelle ein, um die Änderungen zu aktualisieren.

Sie können auch den --prefixParameter für angeben npm install. Dies wird jedoch nicht empfohlen, da Sie es jedes Mal hinzufügen müssen, wenn Sie ein globales Paket installieren.

$ npm -g install packageName --prefix ~/.node_modules

Sie müssen also keine Ordnerberechtigung festlegen

Duy Huy Hoang Do.
quelle
1

Ich konnte dieses Problem beheben nvm, indem ich den Knoten installierte und dann auf die neueste Version stellte.

  1. Installation nvmmit curl(für die neueste Version gehen Sie zu nvm.sh )
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.34.0/install.sh | bash
  1. Liste der verfügbaren Knotenversionen auf
nvm ls

v10.12.0
Standard -> v10.12 (-> v10.12.0)
Knoten -> stabil (-> v10.12.0) (Standard)
stabil -> 10.12 (-> v10.12.0)

  1. Wählen Sie die zu verwendende Version des Knotens
nvm use v10.12

nvm ist nicht kompatibel mit der Option "Präfix" der npm-Konfiguration: derzeit auf "" gesetzt

  1. Führen Sie dies aus, um die Option zu deaktivieren:
nvm use --delete-prefix v10.12.0

Nachdem Sie die obigen Befehle befolgt haben, können Sie React / Angular in Ubuntu installieren.

VishnuB
quelle
1

Verwenden Sie 'sudo npm install xyz', es wird funktionieren.

Sohan
quelle
1

Fügen Sie einfach "sudo" vor dem Befehl npm hinzu. Das ist es.

Farrukh Ahmed
quelle
0

Ich habe sudo verwendet, aber es hat das Problem nicht gelöst. Ich habe das Problem durch Ändern der Ordnerberechtigung node_modules behoben.

sudo chmod -R 777 node_modules

Wenn Sie möchten, können Sie 777 durch einen anderen Code ersetzen, wenn Sie nicht die Berechtigung für alle Benutzer / Gruppen festlegen.

coder618
quelle
0

Für diejenigen unter Ihnen, die das Problem nach Verwendung der oben genannten Lösungen immer noch nicht beheben können. Versuche dies

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

Das sollte den Trick machen, Prost!

dPac
quelle