Ich habe versucht, eine npm-Installation für meine package.json-Datei auszuführen, aber ich habe große Probleme. Es wird immer wieder "Fehler: Versuch, XXX zu entsperren, das nicht gesperrt wurde" für alle meine Abhängigkeiten angezeigt. Hier ist einer von ihnen:
Error: Attempt to unlock tbd@~0.6.4, which hasn't been locked
at unlock (/usr/local/lib/node_modules/npm/lib/cache.js:1304:11)
at cb (/usr/local/lib/node_modules/npm/lib/cache.js:646:5)
at /usr/local/lib/node_modules/npm/lib/cache.js:655:20
at /usr/local/lib/node_modules/npm/lib/cache.js:1290:7
at /usr/local/lib/node_modules/npm/node_modules/lockfile/lockfile.js:167:38
at OpenReq.Req.done (/usr/local/lib/node_modules/npm/node_modules/graceful-fs/graceful-fs.js:144:5)
at OpenReq.done (/usr/local/lib/node_modules/npm/node_modules/graceful-fs/graceful-fs.js:64:22)
at Object.oncomplete (fs.js:107:15)
Wenn ich versuche, es als sudo auszuführen, scheint es weiter zu gehen und einige Pakete zu installieren, aber stattdessen erscheinen einige neue Fehler:
> chokidar@0.8.1 postinstall /Users/tkirchner/Documents/Projects/mm-datatable/node_modules/karma/node_modules/chokidar
> node setup-deps.js
shell-init: error retrieving current directory: getcwd: cannot access parent directories: Permission denied
node.js:811
var cwd = process.cwd();
^
Error: EACCES, permission denied
at Function.startup.resolveArgv0 (node.js:811:23)
at startup (node.js:58:13)
at node.js:902:3
npm ERR! error rolling back Error: ENOTEMPTY, rmdir '/Users/tkirchner/Documents/Projects/mm-datatable/node_modules/karma/node_modules/q'
npm ERR! error rolling back karma@0.10.9 { [Error: ENOTEMPTY, rmdir '/Users/tkirchner/Documents/Projects/mm-datatable/node_modules/karma/node_modules/q']
npm ERR! error rolling back errno: 53,
npm ERR! error rolling back code: 'ENOTEMPTY',
npm ERR! error rolling back path: '/Users/tkirchner/Documents/Projects/mm-datatable/node_modules/karma/node_modules/q' }
npm ERR! Error: ENOENT, chown '/Users/tkirchner/Documents/Projects/mm-datatable/node_modules/karma/node_modules/socket.io/lib/socket.io.js'
Ich habe kürzlich meine Knoten- und npm-Installationen aktualisiert. Vielleicht hat das etwas damit zu tun. Außerdem war der größte Teil meiner Entwicklung im Büro und heute arbeite ich über VPN. Vielleicht hat das auch etwas damit zu tun.
Irgendwelche Ideen?
node.js
npm
karma-runner
TJ Kirchner
quelle
quelle
Antworten:
Laut photusenigma unter: https://github.com/npm/npm/issues/4815
Führen Sie diese Befehle in einem Terminalfenster aus (Hinweis - Ersetzen Sie NICHT den $ USER-Teil ... das ist ein Linux-Befehl, um Ihren Benutzer zu erreichen!):
... und ... wenn Sie auf einem Mac arbeiten (wie ich) und nach dem Ausführen dieser Befehle immer noch Fehler auftreten, führen Sie diesen letzten aus, und Sie sollten gut sein. (Empfehlen Sie, dass Sie versuchen, es zu testen, bevor Sie dies tun. Ich mag es nicht, die Berechtigungen für das GESAMTE Verzeichnis / usr / local zu ändern, es sei denn, es scheint wirklich notwendig zu sein!)
quelle
sudo chown -R `whoami` /usr/lib/node_modules/
chown
die Berechtigungen~/.npm/_locks
für mich nicht geändert . Ich habe meine zum Laufen gebrachtsudo chown -R myname ~/.npm/_locks
sudo chown -R $USER /usr/local/lib/node_modules
? Ich habe es ausgeführt, bevor ich gelesen habe, dass es keine gute Idee ist.Ich habe heute Nachmittag mit einem Kollegen zusammengearbeitet und herausgefunden, wo das Problem liegt. Mein Ordner ".npm" in meinem Home-Verzeichnis gehörte dem Root-Benutzer anstelle von mir. Ich bin mir nicht sicher, was das verursacht hat. Vielleicht habe ich an einem Punkt Node oder npm als Root-Administrator installiert. Auf jeden Fall bin ich gerade gelaufen
sudo chown -R [username] .npm
und konnte endlich wiedernpm install
Befehle aus meinen Projekten ausführen!quelle
~/tmp/
beliebigen Ort ausführen oder an einem beliebigen Ort, den Node als temporären Ort verwendetIn meinem Fall wurde npm mit einem Benutzer aufgerufen, der kein HOME-Verzeichnis hat. Daher würde beispielsweise der folgende Befehl fehlschlagen:
Die Lösung besteht darin, ein HOME-Verzeichnis bereitzustellen, in
someUser
das Schreibzugriff besteht:quelle
sudo -u someUser -i
, indem ich spezifizierte , wodurch eine neue Login-Shell gestartet wird. Ich habe mich etwas genauer damit befasst und der Caching-Code in npm verwendet die Variable npm.cache, die ich standardmäßig vermute$HOME/.npm/
. sudo kann sich je nach Konfiguration und Vorhandensein oder Fehlen von Befehlszeilenoptionen auch unterschiedlich verhalten, wenn die HOME-Variable eingestellt wird.Hatte das gleiche Problem und behebt es durch Ändern der Persistenten gemäß der akzeptierten Antwort:
Der zweite Befehl sollte jedoch vermieden werden, da er die Berechtigungen einer Systemressource herabsetzt (
sudo chown -R $USER /usr/local/lib/node_modules
). Keine gute Idee.Für die Aufzeichnung: "usr" in
/usr/local
steht für Unix System Resources .quelle
Nichts davon hat bei mir funktioniert. Ich musste buchstäblich als root laufen, indem ich Folgendes tat:
Dann das unter Linux Ubuntu 14.04 installierte Paket.
quelle
Der folgende Befehl sollte Berechtigungsprobleme beheben:
Weitere offiziell empfohlene Lösungen finden Sie hier:
https://docs.npmjs.com/getting-started/fixing-npm-permissions
quelle
Meine Lösung:
in meinem Fall war:
Aber ich bekam endlich das gleiche Problem
es funktionierte !
quelle
Ich hatte das gleiche Problem und versuchte stundenlang, die Berechtigung / den Besitz von npm-bezogenen Dateien und Verzeichnissen zu beheben , , hatte aber kein Glück damit.
Plötzlich stellte ich fest, dass ich eine
~/.npmrc
Datei mit einemcache
Eintrag hatte, der auf ein nicht vorhandenes Verzeichnis zeigte. Diesecache
Eigenschaft wurde entfernt, um den Standard-Cache-Speicherort zu verwenden, und jetzt ist sie behoben.quelle
Haftungsausschluss
Ich bin ein Windows- Benutzer. Mein Team und ich sind jedoch auf eine Reihe von Problemen bezüglich npm-Installationsfehlern gestoßen.
Probleme
Das Folgende ist eine Liste der gewonnenen Erkenntnisse und eine mögliche radikale Lösung, die uns immer gerettet hat:
Aktivieren Sie npm-Protokolle, um weitere Einblicke in mögliche Probleme zu erhalten mit:
npm install --loglevel verbose
Radikale
Installieren Sie rimraf global
Führen Sie rimraf auf node_modules aus :
Versuchen Sie dann zu laufen:
Warnung!
Oder dort fehlt. Seien Sie äußerst vorsichtig, was dem Befehl folgt
rimraf
. Es gibt keine Warnungen, keine Eingabeaufforderungen, es gibt nichts. Es löscht einfach das Verzeichnis aus der Phase der Erdreinigung, als wäre es nie da. Versuchen Sie es auf eigenes Risiko.quelle