424 Stimmen

Warum sagt npm install, dass ich nicht erfüllte Abhängigkeiten habe?

Ich habe ein Node-Paket. Wenn ich npm install im Stammverzeichnis des Pakets ausführe, werden viele Dinge installiert, aber es werden dann mehrere Fehlermeldungen ausgegeben, die so aussehen:

npm WARN unmet dependency /Users/seanmackesey/google_drive/code/explore/generator/node_modules/findup-sync/node_modules/glob erfordert graceful-fs@ '~1.2.0', wird aber geladen

Ich muss verwirrt sein darüber, was genau npm install macht. Wenn es eine Abhängigkeit erkennt, sollte es sie nicht installieren? Unter welchen Bedingungen gibt es mir Fehlermeldungen wie diese, und wie kann ich die Abhängigkeiten lösen?

415voto

dule Punkte 17160

Ich glaube, das liegt daran, dass die Abhängigkeitsauflösung ein wenig kaputt ist, siehe https://github.com/npm/npm/issues/1341#issuecomment-20634338

Im Folgenden sind mögliche Lösungen:

  1. Müssen Sie die Top-Level-Module manuell installieren, die unerfüllte Abhängigkeiten enthalten: npm install findup-sync@0.1.2

  2. Strukturieren Sie Ihre package.json neu. Platzieren Sie alle hochrangigen Module (die als Abhängigkeit für andere Module dienen) unten.

  3. Führen Sie den Befehl npm install erneut aus.

Das Problem könnte darin bestehen, dass npm aufgrund von Zeitüberschreitungen oder etwas anderem nicht alle Pakete herunterladen kann.

Hinweis: Sie können die fehlgeschlagenen Pakete auch manuell installieren, indem Sie npm install findup-sync@0.1.2 verwenden.

Vor dem Ausführen von npm install können Ihnen die folgenden Schritte helfen:

  • Entfernen Sie node_modules mit rm -rf node_modules/
  • Führen Sie npm cache clean aus

Warum ist es manchmal notwendig, 'node_modules' zu entfernen? Wenn ein verschachteltes Modul beim npm install fehlschlägt, erkennt das anschließende npm install diese fehlenden verschachtelten Abhängigkeiten nicht.

Falls das der Fall ist, reicht es manchmal aus, die Top-Level-Abhängigkeit dieser fehlenden verschachtelten Module zu entfernen und erneut npm install auszuführen. Siehe

89voto

geon Punkte 7541

Es ist mir passiert, als das WLAN während eines npm install ausgefallen ist. Das Problem wurde behoben, indem ich node_modules gelöscht und dann erneut npm install ausgeführt habe.

33voto

zatamine Punkte 3478

Ich habe das Problem behoben, indem ich diese Befehlszeilen verwendet habe

  • $ rm -rf node_modules/
  • $ sudo npm update -g npm
  • $ npm install

Es ist erledigt!

12voto

stephen Punkte 822

Das Upgrade von NPM auf die neueste Version kann hierbei sehr hilfreich sein. Dules Antwort oben hat recht zu sagen, dass die Abhängigkeitsverwaltung etwas fehlerhaft ist, aber es scheint, dass dies hauptsächlich für ältere Versionen von npm gilt.

Der Befehl npm list gibt Ihnen eine Liste aller installierten node_modules. Als ich von Version 1.4.2 auf Version 2.7.4 aktualisiert habe, wurden viele Module, die zuvor mit WARN unmet dependency markiert waren, nicht mehr als solche gekennzeichnet.

Um npm zu aktualisieren, sollten Sie auf MacOSX oder Linux npm install -g npm eingeben. Auf Windows habe ich festgestellt, dass das erneute Herunterladen und erneute Ausführen des nodejs-Installationsprogramms eine effektivere Möglichkeit war, npm zu aktualisieren.

11voto

Vinay Vemula Punkte 3467

Die obigen Antworten haben mir nicht vollständig geholfen, auch nach dem Löschen des node_modules Verzeichnisses.

Der folgende Befehl hat mir schließlich geholfen:

npm config set registry http://registry.npmjs.org/

Beachten Sie, dass dies Node-Module über eine unsichere HTTP-Verbindung abruft.

Quelle: https://stackoverflow.com/a/13119867/4082503

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X