856 Stimmen

Wie behebe ich den Fehler "Cannot find module" mit Node.js?

Nachdem ich ein Modul von GitHub heruntergeladen und die Anweisungen zum Erstellen befolgt habe, versuche ich, es in ein bestehendes Projekt zu ziehen:

> npm install ../faye

Das scheint zu klappen:

> npm list
/home/dave/src/server
 faye@0.7.1
   cookiejar@1.3.0
   hiredis@0.1.13
   redis@0.7.1

Aber Node.js kann das Modul nicht finden:

> node app.js
node.js:201
        throw e; // process.nextTick error, or 'error' event on first tick
              ^
Error: Cannot find module 'faye'
    at Function._resolveFilename (module.js:334:11)
    at Function._load (module.js:279:25)
    at Module.require (module.js:357:17)
    at require (module.js:368:17)
    at Object.<anonymous> (/home/dave/src/server/app.js:2:12)
    at Module._compile (module.js:432:26)
    at Object..js (module.js:450:10)
    at Module.load (module.js:351:31)
    at Function._load (module.js:310:12)
    at Array.0 (module.js:470:10)

Ich möchte wirklich verstehen, was hier vor sich geht, aber ich bin etwas ratlos, wo ich als Nächstes suchen soll. Irgendwelche Vorschläge?

23voto

Alex Werner Punkte 360

Dies geschieht, wenn eine erste npm Die Installation ist aus irgendeinem Grund abgestürzt (SIGINT von npm), oder die Verzögerung war zu lang, oder die Daten sind beschädigt. Ein erneuter Versuch einer npm-Installation wird das Problem nicht beheben.

Irgendetwas ist bei der ersten Überprüfung von npm schief gelaufen, daher ist es am besten, die Datei zu entfernen und npm install neu zu starten.

19voto

ukosteopath Punkte 413

Dieser Fehler ist mir gestern aufgefallen. Es dauerte eine Weile, bis ich erkannte, dass die main Eintrag in package.json verweist auf eine Datei, die ich verschoben habe. Nachdem ich diese aktualisiert hatte, verschwand der Fehler und das Paket funktionierte.

17voto

Edgar Chavolla Punkte 666

Prüfen Sie, ob die Umgebungsvariable NODE_PATH korrekt gesetzt ist und auf den Pfad node_modules zeigt. nodejs verwendet diese Variable, um nach den Bibliotheken zu suchen

13voto

Ilya Sheershoff Punkte 369

Wenn Sie nvm verwenden, überprüfen Sie, ob vorhandene node_modules, die Bindungen zu anderen Bibliotheken sind, für die richtige Node.js-Version kompiliert wurden.

Ich hatte den gleichen Fehler. Der Grund war der folgende: Wir verwenden nvm, da wir zwei Anwendungen auf einem Server laufen lassen, eine erfordert Node.js 5.6, weil sie node-gd verwendet (das unter Node.js 6 im Moment nicht läuft), die andere erfordert Node.js 6. Node.js 6 ist die apt-get Installation.

Außerdem verwenden wir das Tool pm2 für die Bereitstellung.

Die Standardeinstellung ist, dass der pm2-Prozess startet, wenn nvm nicht in Kraft ist, also verwendet er die apt-get-Installation von Node.js (Version 6). Der Haupt-PM2-Daemon startet also mit Node.js 6. Wenn ich Anwendungen im Fork-Modus ausführe, starten sie in separaten Prozessen und die nvm-Einstellungen sind wirksam. Wenn ich Anwendungen im Clustermodus ausführe, erben sie die Nicht-NVM-Umgebung.

Als ich also versuchte, in den Clustermodus zu wechseln, konnte die Anwendung nicht gestartet werden, weil die für 5.6 kompilierten Bindungen mit dieser Meldung fehlschlugen.

Ich habe das Problem behoben, indem ich pm2 neu gestartet habe, wenn die nvm-Einstellungen in Kraft sind. Auch die Startup-Skripte sollten behoben sein.

11voto

james ace Punkte 1615

Wenn alle anderen Methoden bei Ihnen nicht funktionieren... Versuchen Sie

npm link package_name

z.B.

npm link webpack
npm link autoprefixer

e.t.c.

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