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

Ich habe ein Node-Paket. Wenn ich npm install aus dem Wurzelverzeichnis des Pakets ausführe, installiert es einen Haufen Dinge, gibt dann aber mehrere Fehlermeldungen aus, die wie diese aussehen:

npm WARN unmet dependency /Users/seanmackesey/google_drive/code/explore/generator/node_modules/findup-sync/node_modules/glob requires graceful-fs@'~1.2.0' but will load

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

Lösung

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

Nachfolgend sind die möglichen Lösungen aufgeführt:

  1. Manuelles Installieren der Top-Level-Module, die nicht erfüllte Abhängigkeiten enthalten: npm install findup-sync@0.1.2

  2. Strukturieren Sie Ihre package.json neu. Platzieren Sie alle High-Level-Module (die als Abhängigkeiten für andere Module dienen) am Ende.

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

Das Problem könnte dadurch verursacht werden, dass npm's nicht alle Pakete herunterladen kann, weil die Zeit abgelaufen ist oder etwas anderes.

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

Bevor Sie npm install ausführen, können die folgenden Schritte helfen:

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

Warum ist das Entfernen von node_modules' manchmal notwendig? Wenn ein verschachteltes Modul während npm install nicht installiert werden kann, wird npm install die fehlenden verschachtelten Abhängigkeiten nicht erkennen.

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

Kommentare (12)

Es passierte mir, als das WIFI während einer npm install ausfiel. Das Entfernen von node_modules und erneutes Ausführen von npm install hat es behoben.

Kommentare (7)

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

Untenstehender Befehl hat mir schließlich geholfen:

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

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

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

Kommentare (3)