Ich habe meine erste node.js-App geschrieben, aber sie kann keine Express-Bibliothek finden:
C:\ChatServer\Server>node server.js
module.js:340
throw err;
^
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:364:17)
at require (module.js:380:17)
at Object.<anonymous> (C:\ChatServer\Server\server.js:6:9)
at Object.<anonymous> (C:\ChatServer\Server\server.js:25:4)
at Module._compile (module.js:456:26)
at Object.Module._extensions..js (module.js:474:10)
at Module.load (module.js:356:32)
at Function.Module._load (module.js:312:12)
Aber Express ist installiert (mit -g
Schlüssel):
C:\ChatServer\Server>npm install -g express
npm http GET https://registry.npmjs.org/express
npm http 304 https://registry.npmjs.org/express
npm http GET https://registry.npmjs.org/connect/2.7.11
npm http GET https://registry.npmjs.org/commander/0.6.1
npm http GET https://registry.npmjs.org/range-parser/0.0.4
npm http GET https://registry.npmjs.org/mkdirp/0.3.4
npm http GET https://registry.npmjs.org/cookie/0.1.0
npm http GET https://registry.npmjs.org/buffer-crc32/0.2.1
npm http GET https://registry.npmjs.org/fresh/0.1.0
npm http GET https://registry.npmjs.org/methods/0.0.1
npm http GET https://registry.npmjs.org/send/0.1.0
npm http GET https://registry.npmjs.org/cookie-signature/1.0.1
npm http GET https://registry.npmjs.org/debug
npm http 304 https://registry.npmjs.org/mkdirp/0.3.4
npm http 304 https://registry.npmjs.org/range-parser/0.0.4
npm http 304 https://registry.npmjs.org/cookie/0.1.0
npm http 304 https://registry.npmjs.org/connect/2.7.11
npm http 304 https://registry.npmjs.org/commander/0.6.1
npm WARN package.json range-parser@0.0.4 No repository field.
npm http 304 https://registry.npmjs.org/buffer-crc32/0.2.1
npm http 304 https://registry.npmjs.org/fresh/0.1.0
npm http 304 https://registry.npmjs.org/methods/0.0.1
npm http 304 https://registry.npmjs.org/send/0.1.0
npm http 304 https://registry.npmjs.org/cookie-signature/1.0.1
npm WARN package.json methods@0.0.1 No repository field.
npm WARN package.json methods@0.0.1 No readme data.
npm WARN package.json fresh@0.1.0 No repository field.
npm WARN package.json send@0.1.0 No repository field.
npm WARN package.json cookie-signature@1.0.1 No repository field.
npm http 304 https://registry.npmjs.org/debug
npm http GET https://registry.npmjs.org/mime/1.2.6
npm http GET https://registry.npmjs.org/qs/0.6.5
npm http GET https://registry.npmjs.org/send/0.1.1
npm http GET https://registry.npmjs.org/formidable/1.0.14
npm http GET https://registry.npmjs.org/cookie/0.0.5
npm http GET https://registry.npmjs.org/bytes/0.2.0
npm http GET https://registry.npmjs.org/pause/0.0.1
npm http 304 https://registry.npmjs.org/mime/1.2.6
npm http 304 https://registry.npmjs.org/bytes/0.2.0
npm WARN package.json bytes@0.2.0 No repository field.
npm http 304 https://registry.npmjs.org/pause/0.0.1
npm WARN package.json pause@0.0.1 No repository field.
npm http 304 https://registry.npmjs.org/formidable/1.0.14
npm http 304 https://registry.npmjs.org/qs/0.6.5
npm http 304 https://registry.npmjs.org/send/0.1.1
npm http 304 https://registry.npmjs.org/cookie/0.0.5
npm http GET https://registry.npmjs.org/mime
npm http 304 https://registry.npmjs.org/mime
C:\Users\Dmitry\AppData\Roaming\npm\express -> C:\Users\Dmitry\AppData\Roaming\npm\node_modules\express\bin\express
npm WARN package.json policyfile@0.0.4 'repositories' (plural) Not supported.
npm WARN package.json Please pick one as the 'repository' field
npm WARN package.json assert-plus@0.1.2 No repository field.
npm WARN package.json ctype@0.5.2 No repository field.
express@3.2.6 C:\Users\Dmitry\AppData\Roaming\npm\node_modules\express
├── methods@0.0.1
├── fresh@0.1.0
├── range-parser@0.0.4
├── cookie-signature@1.0.1
├── buffer-crc32@0.2.1
├── cookie@0.1.0
├── debug@0.7.2
├── commander@0.6.1
├── mkdirp@0.3.4
├── send@0.1.0 (mime@1.2.6)
└── connect@2.7.11 (pause@0.0.1, qs@0.6.5, bytes@0.2.0, cookie@0.0.5, formidable@1.0.14, send@0.1.1)
Einige Informationen:
C:\ChatServer\Server>npm --version
1.2.24
C:\ChatServer\Server>node --version
v0.10.9
C:\ChatServer\Server>npm --version
1.2.24
C:\ChatServer\Server>npm ls -g installed express
npm WARN package.json cookie-signature@1.0.1 No repository field.
npm WARN package.json fresh@0.1.0 No repository field.
npm WARN package.json methods@0.0.1 No repository field.
npm WARN package.json range-parser@0.0.4 No repository field.
npm WARN package.json send@0.1.0 No repository field.
npm WARN package.json policyfile@0.0.4 'repositories' (plural) Not supported.
npm WARN package.json Please pick one as the 'repository' field
npm WARN package.json bytes@0.2.0 No repository field.
npm WARN package.json pause@0.0.1 No repository field.
npm WARN package.json assert-plus@0.1.2 No repository field.
npm WARN package.json ctype@0.5.2 No repository field.
C:\Users\Dmitry\AppData\Roaming\npm
└── express@3.2.6
C:\ChatServer\Server>npm ls installed express
C:\ChatServer\Server
└── (empty)
Wie kann ich dieses Problem lösen? ( MUSS ich es ohne installieren -g
?)
Antworten:
Sie müssen Express lokal im Kontext Ihrer Anwendung (
node_modules
Ordner) installieren :Der Grund dafür ist, dass Anwendungen immer in ihrem lokalen Kontext nach Abhängigkeiten suchen. Die globale Installation dient nur zum Einrichten systemweit verfügbarer Binärdateien, z. B. Unit-Test-Runner oder Bootstrapper oder ähnliches.
Bei der globalen Installation von Express erhalten Sie eine
express
Binärdatei, mit der eine Anwendung für Sie gebootet werden kann. Geben Sie für weitere Informationen Folgendes einUm Ihre letzte Frage zu beantworten: JA , Sie müssen es ohne installieren
-g
.quelle
winston
global installiert, was aus irgendeinem Grund beim Starten meiner App als normaler Benutzer funktionierte, aber beim Starten meiner App und eines Systeminitiierungsskripts funktionierte es nicht. Ich habe es behoben, indem ich Winston lokal im App-Verzeichnis installiert habe (und es zu package.json hinzugefügt habe).Bei mir funktionierte es bei lokaler Installation von Express mit der Option --save wie folgt:
quelle
Überprüfen Sie
express
mit diesem Befehl, ob Sie kein Installationsmodul sind :und wenn sich Ihr
node_modules
Verzeichnis an einem anderen Ort befindet, setzen Sie dieNODE_PATH
Umgebungsvariable:quelle
Golo hat die Lösung gut erklärt, aber ich möchte eine Klarstellung hinzufügen:
Manchmal sind Knotenmodule in installiert
und wenn Sie den Knoten blabla.js starten, werden die Module durchsucht
Eine Lösung besteht also darin, eine symbolische Verbindung herzustellen:
quelle
In Ihrem Fall ist Ihr
express
Modul unter installiertC:\Users\Dmitry\AppData\Roaming\npm\node_modules\express
, aber Sie müssen dieses Modul in Ihr Projektverzeichnis aufnehmen. Sie sollten also die Datei, aus der dieexpress
Modulordner stammen,C:\Users\Dmitry\AppData\Roaming\npm\node_modules\
in Ihr Projektverzeichnis kopieren :C:\ChatServer\Server\node_modules
. Wenn Sie keinen Ordner mit dem Namen 'node_modules' in Ihrem Projektordner haben, erstellen Sie ihn zuerst und fügen Sie diese Dateien in diesen Ordner ein. Diese Methode funktionierte für mich auf meinem Windows-PC. Starten Sie Ihren Knotenserver neu und führen Sie den Befehlsknoten erneut ausC:\ChatServer\Server>node server.js
. Es sollte jetzt funktionieren !!!!quelle
Unter Ubuntu-basierten Betriebssystemen können Sie es versuchen
Es funktioniert für mich bei Mint
quelle
Wenn Sie einen Knoten auf Ihrem System installiert haben, installieren Sie Express lokal für Ihr Projekt unter Verwendung der folgenden Optionen für Windows:
oder
Sie können ihm globalen Zugriff gewähren, indem Sie Folgendes verwenden:
quelle
Ich hatte diesen Fehler in vscode, obwohl die Module installiert waren. Ich benutze Typoskript und Express. In den
server.ts
Dateien hatten alle Importe rote, schnörkellose Unterstreichungen. Es stellte sich heraus, dass ich eine fehlerhaftetsconfig.json
Datei hatte.quelle
Erstellen Sie einen Ordner auf Ihrer Festplatte, z. B. sample1, und gehen Sie zur Eingabeaufforderung Typ: cd. Geben Sie den Pfad des Beispiel1-Ordners an und installieren Sie dann alle Module ...
und dann, was auch immer Sie erstellen, speichern Sie im Ordner sample1
Versuch es...
quelle
Wechseln Sie in Ihr Anwendungsverzeichnis und installieren Sie das Express-Modul mit dem folgenden Befehl npm install express --save. Listen Sie dann das gesamte Installationsmodul mit dem folgenden Befehl auf. npm ls Sie sehen alle lokal installierten Module.
quelle
Die globale Installation von Express funktioniert in Ihrem lokalen Projekt nicht. Sie müssen es daher lokal installieren, um es verwenden zu können.
Hoffe das wird funktionieren
Danke dir
quelle
Ich habe das gleiche Problem. Ich hatte Express global unter / usr / local / bin / installiert. Wenn ich 'npm install' mache, wurde Express nicht in den Knotenmodulen des lokalen Verzeichnisses erstellt.
quelle
Dies funktionierte für mich unter MacOS X Sierra
quelle
Ich bin nicht stolz darauf, dies zu teilen, aber in meinem Fall hatte ich:
quelle
Ich hatte den gleichen Fehler nach dem Beispiel in diesem Buch: "Kubernetes Up & Running".
Ich sehe viele Antworten, die vorschlagen, Express "von Hand" zu installieren , aber ich bin nicht überzeugt, dass dies die beste Lösung ist.
Da wir package.json verwenden (ich kann es in den Protokollen sehen) und die richtige Methode zum Erstellen der App ausgeführt wird
npm install
, habe ich die Express- Abhängigkeit in die Datei package.json eingefügt .Ich bekomme die aktuelle Version mit
npm search express
.quelle