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.
Sudo npm install -g npm
)Sudo npm cache clear
).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.
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
Ich bin auf ein ähnliches Problem gestoßen,
npm cache clean
ich habe es gelöst.
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
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
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
]
Ich habe eine ähnliche Fehlermeldung erhalten, als ich versuchte, eine Reihe von Abhängigkeiten zu npm install
en. 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
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
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 :
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.
Bitten Sie die npm, bower, grunt, ...
-Community, das Problem zu beheben, wie ich es oben beschrieben habe.
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
Ich denke, Ihr kompiliertes Kaffeeskript fehlt im veröffentlichten npm-Paket. Versuchen Sie, einen prepublish -Befehl zu schreiben.
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
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.
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.
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
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.
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ß.
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.
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
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
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.)
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
Zuerst machen
npm rm -rdf node_modules
dann mach
npm install
Installieren Sie anschließend alle Dateien, die Sie hinzufügen möchten
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.
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!