it-swarm.com.de

npm Installationsfehler mit Fehler: ENOENT, chmod

Ich versuche, ein npm-Modul, das ich gerade veröffentlicht habe, global zu installieren. Jedes Mal, wenn ich versuche zu installieren, entweder von npm oder dem Ordner, erhalte ich diese Fehlermeldung.

npm ERR! Error: ENOENT, chmod '/usr/local/lib/node_modules/takeapeek/lib/cmd.js'
npm ERR! If you need help, you may report this log at:
npm ERR!     <http://github.com/isaacs/npm/issues>
npm ERR! or email it to:
npm ERR!     <[email protected]>

npm ERR! System Linux 3.8.0-19-generic
npm ERR! command "node" "/usr/local/bin/npm" "install" "-g" "takeapeek"
npm ERR! cwd /home/giodamlio
npm ERR! node -v v0.10.6
npm ERR! npm -v 1.3.6
npm ERR! path /usr/local/lib/node_modules/takeapeek/lib/cmd.js
npm ERR! code ENOENT
npm ERR! errno 34
npm ERR! 
npm ERR! Additional logging details can be found in:
npm ERR!     /home/giodamlio/npm-debug.log
npm ERR! not ok code 0

Ich benutze Sudo und habe dreifach alles in dem Paket überprüft, alles sollte funktionieren. Ich suchte ein wenig herum und sah einige Similer-Fälle, von denen keiner gelöst wurde. Hier ist was ich versucht habe.

  • Npm aktualisieren (Sudo npm install -g npm)
  • Löschen Sie den globalen npm-Cache (Sudo npm cache clear).
  • Löschen Sie den npm-Cache des Benutzers (npm cache clear).

Ich habe festgestellt, dass der Fehler mit der Datei zu tun hatte, die ich mit dem Pfad verlinke, insbesondere wenn npm versucht hat, ein chmod auszuführen. Das sollte kein Problem sein, mein lib/cli.js hat normale Berechtigungen und npm hat Superuser-Berechtigungen während dieser Installation.

Nach dem Durchsuchen der npm-Dokumente fand ich eine Option, die npm davon abhielt, die Bin-Links (--no-bin-links) zu erstellen. Als ich es mit der Installation versuchte, funktionierte es einwandfrei.

Also, was ist der Deal? Ist dies ein seltsamer Fringe Case Bug , der noch keine Lösung hat?

Edit: Zu Referenzzwecken ist hier das von mir hochgeladene Modul.

97
giodamelio

Ok, es sieht so aus, als würde NPM Ihren .gitignore als Basis für die .npmignore-Datei verwenden und ignoriert /lib. Wenn Sie eine leere .npmignore-Datei in das Stammverzeichnis Ihrer Anwendung einfügen, sollte alles funktionieren. 

[edit] - Weitere Informationen zu diesem Verhalten hier: https://docs.npmjs.com/misc/developers#keeping-files-out-of-your-package

109
badsyntax

Ich bin auf ein ähnliches Problem gestoßen, 

npm cache clean

ich habe es gelöst.

97
Genjuro

Ich habe diese Fehlermeldung bei der Installation von npm erhalten und das Hinzufügen von .npmignore konnte nicht gelöst werden.

Fehler: ENOENT, stat 'C:\Users\Benutzername\AppData\Roaming\npm'

Ich habe versucht, in den genannten Ordner zu gehen, und es existiert nicht. Der Fehler wurde behoben, als ich erstelltnpm Ordner im Roaming Ordner ablegte.

Dies ist unter Windows 8.1

9
Vijay Vepakomma

Dieses Problem trat für mich auf einem Mac auf, als ich npm install -g bower ausführen wollte. Es gab mir eine Reihe von Fehlern, weil ich Dinge wie grazile-fs nicht finden konnte. Ich bin mir nicht sicher, wie ich npm ursprünglich installiert habe, aber es sieht so aus, als ob Knoten mit Homebrew verwendet wurde. Ich bin zuerst gelaufen

brew uninstall node

Dadurch wurden sowohl node als auch npm von meinem Pfad entfernt. Von dort habe ich es gerade neu installiert

brew install node

Als der Vorgang abgeschlossen war, hatte ich node und npm auf meinem Pfad und konnte laufen

rm -rf ~/.npm
npm install -g bower

Diese installierte dann die Bower erfolgreich.

Das Aktualisieren der Braueformeln und das Aktualisieren der Installationen schienen für mich nicht zu funktionieren, ich bin mir nicht sicher, warum. Das Entfernen des .npm-Ordners hatte für andere Leute funktioniert, und ich hatte es ohne Erfolg versucht. Ich habe es diesmal nur für den Fall gemacht. Beachten Sie auch, dass keines der folgenden Probleme das Problem für mich gelöst hat, obwohl es für andere das Problem war:

npm cache clean
Sudo npm cache clean
9
user1978019

Ich hatte das gleiche Problem und fand gerade eine Handhabung, die hier nicht erwähnt wurde. Obwohl ich zur Community beitragen würde:

npm install -g myapp kopierte das bin-Verzeichnis nicht. Ich fand das, weil ich es nicht in die files in meinem package.json aufgenommen habe

"files": [
  "lib",
  "bin" // this was missing
]
4
dthree

Ich habe eine ähnliche Fehlermeldung erhalten, als ich versuchte, eine Reihe von Abhängigkeiten zu npm installen. Es stellte sich heraus, dass einige von ihnen nicht auf Debian/Ubuntu installiert werden können, da sie davon ausgehen, dass /usr/bin/node die ausführbare Datei des Knotens ist. Um dies zu beheben, müssen Sie tun 

Sudo ln -s nodejs /usr/bin/node 

oder noch besser, 

Sudo apt-get install nodejs-legacy

Für weitere Informationen: https://stackoverflow.com/a/21171188/7581

3
itsadok

Bei npm install bei einer lokalen Installation wurde ein ähnlicher Fehler angezeigt:

npm ERR! enoent ENOENT: no such file or directory, stat '[path/to/local/installation]/node_modules/grunt-contrib-jst'

Ich bin nicht sicher, was den Fehler verursacht hat, aber ich hatte kürzlich ein paar neue Knotenmodule lokal installiert, den Knoten mit Homebrew aufgerüstet und 'npm update -g' ausgeführt.

Die einzige Möglichkeit, das Problem zu lösen, bestand darin, das lokale Verzeichnis node_modules vollständig zu löschen und npm install erneut auszuführen:

cd [path/to/local/installation]
npm rm -rdf node_modules
npm install
3
g.carey

In meinem Fall (mehrfacher Code ENOENT errno 34) war das Problem mit ~/.npm/ Verzeichniszugriff. Darin befanden sich einige Unterverzeichnisse mit root:root-Rechten, die Probleme verursachten, während ich als normaler Benutzer (ohne Sudo) Befehle ausführte. Also habe ich den Besitz aller Unterverzeichnisse und Dateien in ~/.npm/ dir in meinen lokalen Benutzer und meine Gruppe geändert. Das hat den Trick auf meinem Ubuntu (auf Mac sollte auch funktionieren).

$ Sudo chown yourusername.yourgroupname ~/.npm/ -R

Sie sollten Ihren Benutzernamen kennen, oder? Wenn nein, führen Sie $ whoami aus und ersetzen Sie Ihren Gruppennamen durch diesen Namen wie folgt:

$ Sudo chown johnb.johnb ~/.npm/ -R

BEARBEITEN:

Testfall :

Von meinem lokalen Konto /home/johnb habe ich npm-global irgendeinen Generator für yeoman installiert, wie diesen:

$ Sudo npm install -g generator-laravel

Problemnatur :

Die obige Aktion hat dazu geführt, dass einige Abhängigkeiten in ~/.npm/ dir installiert wurden und root:root-Besitzrechte hatten (wegen Sudo ...). Offensichtlich wird npm nicht als lokaler Benutzer ausgeführt (oder ändert den Besitz der Abhängigkeiten nachträglich), wenn Abhängigkeiten abgerufen und in ein lokales Benutzer-Unterverzeichnis ~/.npm/..__ geschrieben werden. Solange npm die grundlegenden Sicherheitsprobleme des Unix-Dateisystems nicht beachtet, tritt das Problem erneut auf . 

Lösung :

  1. Prüfen Sie fortlaufend, ob ~/.npm/ Subdirs enthält, deren Eigentümer (und/oder Berechtigungen) sich von Ihrem lokalen Benutzerkonto unterscheidet, insbesondere wenn Sie etwas mit sodo (root) installieren oder aktualisieren. Wenn ja, ändern Sie den Besitz von ~/.npm/ rekursiv in einen lokalen Benutzer.

  2. Bitten Sie die npm, bower, grunt, ...-Community, das Problem zu beheben, wie ich es oben beschrieben habe.

2
paperclip

Ich habe spezifisch ein ähnliches Problem: ERR! enoent ENOENT: Keine solche Datei oder Verzeichnis, chmod 'node_modules/npm/node_modules/request/node_modules/http-signature/node_modules/sshpk/bin/sshpk-conv .__ wurde Vagrant Box verwendet, und das Projekt befand sich in einem freigegebenen Ordner. Die Probleme scheinen nur da zu sein, wenn ich das Projekt in einen anderen, nicht freigegebenen Ordner (mit Host) verschiebe, voila! Problem gelöst ... Nur für den Fall, dass eine andere Person auch Vagabund verwendet

2
joaco1977

Ich denke, Ihr kompiliertes Kaffeeskript fehlt im veröffentlichten npm-Paket. Versuchen Sie, einen prepublish -Befehl zu schreiben.

2
leeway

Ich habe diese Fehlermeldung erhalten, als ich versuchte, ein Grunt-Plugin zu installieren. Ich fand, ich hatte eine veraltete Version von npm und der Fehler verschwand nach dem Update von npm auf die neueste Version

npm install -g npm
2
Prabhu Murthy

Ich habe alles versucht, was ich im Netz gefunden habe (npm cache clear und rm -rf ~/.npm), aber nichts scheint zu funktionieren. Das Problem wurde gelöst, indem Knoten (und npm) auf die neueste Version aktualisiert wurden. Versuch das.

1
Nikola M.
  1. Installieren Sie die neueste Version des Knotens
  2. Run: npm cache clean
  3. Führen Sie Folgendes aus: npm install cordova -g
1

In Windows hatte ich einen ähnlichen Fehler. Suchen Sie nach App-Daten und suchen Sie nach der Zeichenfolge npm.

Ich habe den String 'npm' (einschließlich Anführungszeichen) durch 'npm.cmd' in atlasboard\lib\package-dependency-manager.js und atlasboard\lib\cli\commands.js ersetzt. Das Problem wurde behoben.

1

Ich habe ein ähnliches Verhalten nach dem Upgrade auf npm 6.1.0 festgestellt. Es schien einmal zu funktionieren, aber dann kam ich in einen Zustand mit diesem Fehler, als ich versuchte, ein Paket zu installieren, das durch path im Dateisystem angegeben wurde:

npm ERR! code ENOENT
npm ERR! errno -2
npm ERR! syscall rename

Folgende Dinge haben das Problem nicht behoben :

  • rm -rf node_modules
  • npm cache clean (gab npm ERR! As of [email protected], the npm cache self-heals....use 'npm cache verify' instead.)
  • npm cache verify
  • rm -rf ~/.npm

Wie ich das Problem behoben habe :

  • rm package-lock.json
1
Ian

Sie können diese Fehlermeldung erhalten, wenn Ihre node.js auch irgendwie beschädigt ist. Ich habe diesen Fehler durch das Deinstallieren/Neustarten/Installieren von node.js vollständig behoben und diesen Fehler zusammen mit den drei anderen mysteriösen Fehlern behoben, die ausgelöst werden. 

1
LAdams87

Der gleiche Fehler während der globalen Installation (npm install -g mymodule) für ein Paket mit einem nicht vorhandenen Skript.

In package.json:

    ...
    "bin": {
      "module": "./bin/module"
    },
    ...

Der ./bin/module existierte jedoch nicht, da er modulejs hieß.

1
hg.

Seien Sie vorsichtig mit ungültigen Werten für die Schlüssel "verzeichnisse" und "Dateien" in package.json

Wenn Sie mit einer neuen Anwendung beginnen und vollständig leer beginnen möchten, müssen Sie Entweder in einem vollständig leeren Ordner starten oder eine gültige package.json-Datei darin haben.

Wenn Sie nicht zuerst eine package.json-Datei erstellen möchten, geben Sie einfach Folgendes ein: npm i some_package

Paket mit dem Namen "some_package" sollte korrekt in einem neuen Unterordner "node_modules" installiert werden. 

Wenn Sie zuerst eine package.json-Datei erstellen, geben Sie Folgendes ein: npm init Behalten Sie alle Standardeinstellungen bei (indem Sie einfach auf ENTER klicken), und Sie sollten eine gültige Datei erhalten.

Es sollte so aussehen:

{
  "name": "yourfoldername",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "author": "",
  "license": "ISC"
}

Beachten Sie, dass folgende Schlüssel fehlen: "verzeichnisse", "repository" und "files". Wenn Sie falsche Werte für "verzeichnisse" und/oder "files" verwenden, können Sie das Paket nicht installieren. Wenn Sie diese Schlüssel weglassen, wurde das Problem gelöst.

Beachten Sie auch die Taste "main". Dieser ist vorhanden, enthält jedoch einen ungültigen Wert. Es existiert (noch) keine Datei "index.js". Sie können es sicher entfernen.

Geben Sie nun Folgendes ein: npm i some_package Und das Paket mit dem Namen "some_package" sollte korrekt in einem neuen Unterordner "node_modules" installiert werden.

1
RWC

Ich habe die Fehlermeldung "Fehler: ENOENT, stat" C:\Users\Benutzername\AppData\Roaming\npm "erhalten. Es gab jedoch kein solches Verzeichnis. Das Verzeichnis wurde erstellt und die Installation von npm funktionierte

0
k.iyengar

Ich habe kürzlich ein Upgrade auf Knoten 4.2.1 auf einem Windows 7 x64-Computer durchgeführt. Beim Laufen

npm install -g bower

Ich habe einen ähnlichen Fehler erhalten:

npm ERR! enoent ENOENT: Keine solche Datei oder Verzeichnis, öffnen Sie 'C:\Users\THE_USERNAME\AppData\Local\Temp\npm-THE_HASH'.

Ich dachte, es hängt mit dem AppData-Pfad zusammen, und ich spielte mit 

npm config edit

und

npm config edit --global

um die Felder Präfix, Cache und Tmp zu ändern, haben Sie jedoch den gleichen Fehler mit den neuen Pfaden erhalten:

npm ERR! enoent ENOENT: Keine solche Datei oder Verzeichnis, öffnen Sie 'C:\Users\THE_USERNAME\npm-temp\npm-THE_HASH'.

Alle Befehle wurden als Administrator ausgeführt, sodass ich über vollständige Berechtigungen verfügte.

Dann dachte ich, dass es einige Probleme mit vorhandenen Dateien gab, also lief ich:

npm cache clean

Habe aber den gleichen Fehler bekommen. Es lagen jedoch immer noch einige temporäre Dateien herum. Das manuelle Entfernen aller temporären Daten mit cygwin behebte schließlich das Problem für mich:

rm -rf bower bower.cmd node_modules etc

Wenn Sie nur Windows-Cmd haben, können Sie so etwas verwenden

rmdir /S THE_TEMP_DIR

alle Unterverzeichnisse entfernen (obwohl, wenn Sie Knotenabhängigkeiten tief verschachtelt haben, dies notorisch problematisch ist)

Möglicherweise gibt es einige Probleme mit dem Upgrade von npm und den Versionen von Bower oder anderen Paketen. In meinem Fall schien das das Problem zu sein

0
Andrew Johnston

Ich hatte ein ähnliches Problem mit einer anderen Ursache: Der yo node-Generator hatte "files": ["lib/"] zu meinem package.json hinzugefügt. Da sich cli.js außerhalb des lib/-Verzeichnisses befand, wurde es bei der Veröffentlichung in npm übersprungen.

(Yeoman Ausgabe unter https://github.com/yeoman/generator-node/issues/63 sollte bald behoben sein.)

0
Nathan Friedly

Wenn Sie versucht haben, mit diesem Fehler in Ihrem Projektverzeichnis zu installieren, können Sie es versuchen:

rm -rf ./node_modules
npm cache clear
npm remove sails

dann kannst du versuchen, "install" zu machen

Wenn Sie über "npm ERR! Enoent ENOENT: keine solche Datei oder ein solches Verzeichnis, chmod '.../djam-backend/node_modules/js-beautify/js/bin/css-beautify.js" verfügen, können Sie versuchen, zu installieren einige frühere Version von js-beautify, weitere Kommentare: https://github.com/beautify-web/js-beautify/issues/1247

"dependencies": {
  ...
  "js-beautify": "1.6.14"
  ...
}

und der Lauf "make install". Es scheint zu funktionieren, wenn Sie keine anderen Abhängigkeiten haben, die eine höhere Version (1.7.0) erfordern. In diesem Fall müssen Sie diese Pakete auch in der packages.json-Version herunterstufen.

oder 

0
Alex

Zuerst machen

 npm rm -rdf node_modules

dann mach

npm install

Installieren Sie anschließend alle Dateien, die Sie hinzufügen möchten

0
Shreyash Shetty

Während der Installation von ionic bekam ich einen Fehler

115648 error enoent ENOENT: keine solche Datei oder Verzeichnis, umbenennen 'C:\Benutzer\Benutzername\AppData\Roaming\npm\node_modules.staging\ansi-b11f0c4b' -> 'C:\Benutzer\Benutzername\AppData\Roaming\npm\node_modules\ionic\node_modules\cordova-lib\node_modules\ansi'

In diesem Pfad befand sich kein Ordner mit dem Namen ansi. Ich habe es dort erstellt und richtig installiert.

0
Vijay Mishra

Keines der oben genannten Dinge funktionierte für mich. Aber yarn install hat funktioniert, dann hat npm i angefangen zu arbeiten. Nicht sicher, welches Garn fixiert ist, aber schnelle und einfache Lösung!

0
Todd Hale