node.js, Fehler: Modul 'express' kann nicht gefunden werden


124

Ich bin neu bei Node.js und versuche Express zu lernen, um meine erste Webanwendung zu erstellen. Ich blieb bei meinem ersten Beispielcode stecken und brauche Hilfe, um ihn zum Laufen zu bringen. Bevor ich diese Frage poste, habe ich nach Stapelüberlauf gesucht, einige ähnliche Fragen gefunden, konnte sie aber immer noch nicht beheben.

Fehler: Modul 'Express' kann nicht gefunden werden

Ich benutze Mac OS 10.8.2 . Ich habe Node.js mit installiert nvm.

node.js: 0.8.20 Pfad zum Knoten: /Users/feelexit/nvm/v0.8.20/bin/node Pfad zum Ausdrücken: / Users / feelexit / nvm / node_modules / express

Hier ist mein Beispielcode: Diese Datei befindet sich unter:

/Users/feelexit/WebstormProjects/learnnode/node_modules/index.js

var express = require('express');

var app = express();

app.get('/', function(req, res){

    res.send('welcome to express');
});

app.listen(3000);

wenn ich versuche, diesen Befehl auszuführen node index.js

Ich erhalte die folgende Fehlermeldung. Bitte helfen Sie mir, das Problem zu beheben.

Danke dir.

Error: Cannot find module 'express'
    at Function.Module._resolveFilename (module.js:338:15)
    at Function.Module._load (module.js:280:25)
    at Module.require (module.js:362:17)
    at require (module.js:378:17)
    at Object.<anonymous> (/Users/feelexit/WebstormProjects/learnnode/node_modules/index.js:1:81)
    at Module._compile (module.js:449:26)
    at Object.Module._extensions..js (module.js:467:10)
    at Module.load (module.js:356:32)
    at Function.Module._load (module.js:312:12)
    at Module.runMain (module.js:492:10)
feelexits-Mac:node_modules feelexit$ 

Update zur Beantwortung von Chovys Frage:

feelexits-Mac:~ feelexit$ npm install
npm ERR! install Couldn't read dependencies
npm ERR! Error: ENOENT, open '/Users/feelexit/package.json'
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!     <npm-@googlegroups.com>

npm ERR! System Darwin 12.2.0
npm ERR! command "/Users/feelexit/nvm/v0.8.20/bin/node" "/Users/feelexit/nvm/v0.8.20/bin/npm" "install"
npm ERR! cwd /Users/feelexit
npm ERR! node -v v0.8.20
npm ERR! npm -v 1.2.11
npm ERR! path /Users/feelexit/package.json
npm ERR! code ENOENT
npm ERR! errno 34
npm ERR! 
npm ERR! Additional logging details can be found in:
npm ERR!     /Users/feelexit/npm-debug.log
npm ERR! not ok code 0


30
Haben Sie npm install
getippt

1
Sind Sie sicher, dass sich die Express-Bibliothek in Ihrem Ordner "node_modules" befindet? Möglicherweise möchten Sie auch versuchen, Ihre index.js- Datei in ein Verzeichnis nach "/ Users / feelexit / WebstormProjects / learnnode /" zu verschieben und den Ordner node_modules in Ruhe zu lassen.
Standard

1
Bitte posten Sie Ihre package.jsonDatei. Dies hilft beim Debuggen des Problems.
Akhil Raina

@chovy, ich benutze npm install express, um express zu installieren. Was macht nur "npm install"?
Qinking126

Antworten:


156

Es sagt

 Cannot find module 'express'

Haben Sie Express installiert? Wenn nicht, führen Sie dies aus.

 npm install express

Und führen Sie Ihr Programm erneut aus.


1
Dies behebt das Problem in meinem Fall nicht. npm install expresszeigt diesen Fehler npm ERR! Error: UNKNOWN, symlink '../express/bin/express'. Scheint ein tieferes Problem zu sein.
Sliq

Verwenden Sie sudo, wenn Sie Ihre Verzeichnisberechtigungen für npm nicht festgelegt haben. In jedem Fall ist "sudo npm install" eine bessere Option.
Gaurav Gupta

Symlink-Fehler treten häufig auf, wenn Sie Dinge global installiert haben und der Symlink unterbrochen wurde. Versuchen Sie npm link, die entsprechende Verknüpfung neu zu erstellen ...
Frank Nocke

@Sliq Ich habe es mit Ihrer Lösung versucht, aber ich kann mein Problem nicht lösen. Können Sie mir helfen?
VjyV

Übersehen Sie nicht "Und führen Sie Ihr Programm erneut aus." In meinem Fall musste ich den Prozess in meinem neu starten process manager. Es wurde nicht von selbst neu gestartet.
Tadej

42

Nachdem Sie in Ihrem Terminal ausgedrückt haben, tun Sie dies

 npm install

So installieren Sie alle Abhängigkeiten.

Dann können Sie eine Knoten-App ausführen, um den Server auszuführen.


7
Sie sollten darauf hinweisen, dass dies eine Paketlistendatei erfordert, z. B. .json. Und dies ist nicht immer der Fall.
Pogrindis

@VjyV in demselben Verzeichnis, in dem Sie Ihre .js-Knotendatei haben. Die Datei package.json sollte sich jedoch im Verzeichnis befinden, damit die erforderlichen Abhängigkeiten installiert werden können.
Saurabh Rana

34

Überprüfen Sie, ob Sie das expressModul installiert haben . Wenn nicht, verwenden Sie diesen Befehl:

npm install express

und wenn sich Ihr node_modulesVerzeichnis an einem anderen Ort befindet, setzen Sie die NODE_PATHUmgebungsvariable:

set NODE_PATH=your\directory\to\node_modules;%NODE_PATH%

12
Dies ist die richtige Antwort für alle, die diese CTRL+C / CTRL+V npm installAntworten veröffentlichen: Glauben Sie wirklich, dass jemand versuchen würde, etwas auszuführen, ohne zu überprüfen, ob es zuerst installiert wurde? Ernsthaft ...
Claudio Holanda

3
Nur ein kleines Detail hinzufügen: Sie müssen den Befehl install express im Verzeichnis Ihrer Anwendung ausführen und nicht in Ihrem Node.js-Installationsordner oder im npm-Ordner in AppData. Weil das der Fehler ist, den ich gemacht habe, weil ich dachte, es sei eine Art SDK-Add-On.
Alex

28

 npm install --save express   
Dies hat bei mir funktioniert. Führen Sie einfach die Installation von express.js erneut aus


11

Die npm-Installation aus Ihrem App-Verzeichnis behebt das Problem, da alle erforderlichen Informationen installiert werden


5

Hier einen alten Thread ausgraben, ABER ich hatte denselben Fehler und habe ihn behoben, indem ich zu dem Verzeichnis navigiert habe, in dem sich meine NodeApp befindet und ausgeführt wird npm install -d


Ich bin mir
Guy Lowe

1
@GuyLowe -dist Debug für npm, -Dist dev Abhängigkeiten.
John Pavek

4

Sofern Sie Node_PATH nicht festlegen , besteht die einzige andere Option darin, Express im App-Verzeichnis zu installieren, z npm install express --save. Express ist möglicherweise bereits installiert, nodekann es jedoch aus irgendeinem Grund nicht finden


Dieser hat bei mir funktioniert. Führen Sie den Installationsbefehl besser im selben Verzeichnis aus, in dem sich Ihre .js-Dateien befinden. Sie können auch den Befehl "npm init" ausführen, um die Datei package.json zu erstellen und weitere Probleme zu vermeiden.
Emarshah

3

Sie haben Ihr Express-Modul in einem anderen Verzeichnis als Ihr Projekt. Das ist wahrscheinlich das Problem, da Sie require()es lokal versuchen . Versuchen Sie, Ihr Express-Modul von / Users / feelexit / nvm / node_modules / express nach / Users / feelexit / WebstormProjects / learnnode / node_modules / express zu verschieben . Diese Informationen können Ihnen detailliertere Informationen zu den Dateistrukturen von node_module geben.


2

Wenn sich Ihre Hauptdatei unter befindet, muss sich /Users/feelexit/WebstormProjects/learnnode/node_modules/index.jsExpress unter befinden, /Users/feelexit/WebstormProjects/learnnode/node_modules/node_modulesda der Knoten immer nach Modulen in ./node_modules(und seinem internen Ordner) sucht, wenn der Pfad nicht mit ./oder beginnt /( weitere Informationen hier ).

Ich denke, Sie vermissen es, Ihre Hauptdatei in den Modulordner zu legen


2

Führen Sie für dieses Szenario den Befehl npm install express mit Ihrer Eingabeaufforderung cmd für den jeweiligen Ordner aus, in dem Sie das Programm ausführen möchten. Beispiel Ich möchte das Express-Modulprogramm server.js in F: \ nodeSample ausführen. Führen Sie also "npm install express" in diesem bestimmten Ordner aus und führen Sie dann server.js aus


1

In seltenen Fällen kann der npm-Cache beschädigt werden. Für mich hat funktioniert:

npm cache clean --force

Im Allgemeinen erkennt der Paketmanager selbst Beschädigungen und ruft diese erneut ab, sodass dies normalerweise nicht erforderlich ist. In meinem Fall stürzte Windows 10 jedoch einige Male ab, und ich vermute, dass dies während eines Abrufvorgangs geschehen ist. Hoffe es hilft jemandem!

Weitere Informationen: https://docs.npmjs.com/cli/cache


1

Ich bin auf ein ähnliches Problem gestoßen und am Ende waren es einige alte Abhängigkeiten, die meinen Heroku-Server durcheinander gebracht haben.

Im Ordner meines Projekts habe ich Folgendes ausgeführt:

npm uninstall
npm install

Ich hoffe, es hilft


0

npm ERR! Error: ENOENT, open '/Users/feelexit/package.json'

Dies geschieht aufgrund fehlender Berechtigungen oder nicht verknüpfter Dateien, während npm arbeitete.

npmDies bedeutet, dass die Ausführung als dieser Benutzer nicht über genügend Rechte zum Lesen / Schreiben aus einer Datei verfügt, in diesem Fall package.json.

Versuchen Sie, sudovor dem gesamten Befehl hinzuzufügen - er sollte aufgelöst werden.

$ sudo npm install -g express
$ Password:*******

Passwort wäre Ihr Administratorkennwort Ihres Mac.

-gflag installiert dieses Modul (express) im globalen Kontext des Knotens - was bedeutet, dass der Knoten das expressModul aus jeder js-Datei erkennt / erkennen sollte, ohne einen vollständigen Pfad zu dem verwendeten Modul angeben zu müssen.

Hoffe das hilft!!


0

Ich hatte das gleiche Problem. Mein Problem war, dass ich vor der Installation von Express in das Projektverzeichnis Node.js in der Befehlszeile wechseln muss.

cd /Users/feelexit/WebstormProjects/learnnode/node_modules/

0

Ich vermute, dass dies eine Kursarbeit aus dem Webentwicklungskurs von Colt Steele ist ... Ich habe nach der gleichen Antwort gesucht, warum ich auch diesen Fehler erhalten habe. Colt sagt es nicht, aber Sie nehmen den Ordner node_module und bewegen sich in den neuen Ordner, in dem du arbeitest ... das hat bei mir funktioniert.


0

Führen Sie den npm install express body-parser cookie-parser multer --saveBefehl im selben Verzeichnis wie Ihre Quellcode-NodeJS-Datei aus, um dieses Problem zu beheben. P / s: Überprüfen Sie Ihr Verzeichnis nach dem Ausführungsbefehl, um mehr zu verstehen!


0
D:\learn\Node.js\node app.js
module.js:549
    throw err;
    ^

Error: Cannot find module 'body-parser'
    at Function.Module._resolveFilename (module.js:547:15)
    at Function.Module._load (module.js:474:25)
    at Module.require (module.js:596:17)
    at require (internal/module.js:11:18)

Manchmal stimmt die Version nicht mit package.json überein. Das Problem wurde behoben, indem die Datei package.json überprüft und dann die folgenden Befehle verwendet wurden: npm install body-parser@1.13.2 Es wurde für mich behoben.


0

Hast du es versucht

npm install

Wenn Sie speziell nur Express suchen

npm install --save express
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.