Wenn ich versuche, die mit express erstellte app.js
-Datei auszuführen, erhalte ich die folgende Fehlermeldung:
$ node app.js
node.js:134
throw e; // process.nextTick error, or 'error' event on first tick
^
Error: Cannot find module 'express'
at Function._resolveFilename (module.js:320:11)
Wenn ich express --version
eingebe, erhalte ich eine Rückgabeanweisung von 2.3.3
. Ich habe npm verwendet, um express zu installieren. Ich musste npm manuell mit diesen Anweisungen erstellen:
git clone http://github.com/isaacs/npm.git
cd npm
Sudo make install
Der Fehler ist Error: Cannot find module 'express'
.
Muss ich nach der Installation von npm und express etwas tun, damit express die von npm erstellten Module sehen kann?
Express ist global installiert. Ich habe das Flag -g
verwendet, um es zu installieren.
Edit: Wenn ich "node -e require.paths"
versuche, bekomme ich:
[ '/home/user/.node_modules',
'/home/user/.node_libraries',
'/usr/local/lib/node' ]
Daher erkennt der Knoten die npm-Installation nicht. Wie erhalte ich einen Knoten, um die npm-Installation zu erkennen?
Ich hatte das gleiche Problem. Das hat aber für mich funktioniert:
Scheint, als ob npm (now?) Knotenmodule nach /usr/local/lib/node_modules/
und nicht nach /usr/local/lib/node/
installiert.
Was ich getan habe, war einfach alles von node_modules zu node: Sudo cp -r /usr/local/lib/node_modules/* usr/local/lib/node/
zu kopieren und jetzt scheint es für mich zu funktionieren.
Hoffe das hilft dir :-)
Express installieren
npm install -g express
Erstellen Sie eine neue App
express your_app
cD in App-Verzeichnis
cd your_app
verwenden Sie den npm-Link, um die Module aufzulösen
npm link express
Verwenden Sie lokale Installationen für request () und globale Installationen für Befehlszeilenanwendungen.
Wenn Sie beides benötigen, verwenden Sie den Befehl npm link
.
Auf Ubuntu 12.04 müssen Sie export NODE_PATH=/usr/local/lib/node_modules
zu Ihrer /.bashrc hinzufügen, um global installierte Module zu verwenden.
Es scheint, dass, während npm für die Installation globaler Module in /usr/local/lib/node_modules
aktualisiert wurde, Node's eigener require.paths
diese Änderung noch nicht wiedergibt.
Es gibt zwei sinnvolle Lösungen:
Fügen Sie den folgenden Code am Anfang Ihrer Anwendung hinzu:
require.paths.Push('/usr/local/lib/node_modules');
Pro: nicht-invasiv, einfach hinzuzufügen
Con: erfordert Disziplin, zukünftige Versionen des Knotens werden beschränken den Zugriff auf require.paths
Führen Sie als root Folgendes aus:
ln -s /usr/local/lib/node_modules /usr/local/lib/node
Pro: angemessen nichtinvasiv
Con: erfordert root, ändert linux fs und überlebt möglicherweise keine Systemaktualisierungen
Was ist mit NODE_PATH=/usr/local/lib/node_modules
in .bashrc oder .bash_profile ? Ich denke, es ist der richtige Weg.
Wenn Sie Windows verwenden, kann es vorkommen, dass die Umgebungsvariable NODE_PATH
nicht gesetzt ist. Wenn Sie node fileName.js
ausführen, werden die Bibliotheken daher nicht gefunden.
Suchen Sie nach der Variablen in Ihrer Konsole, und erstellen Sie sie, falls nicht vorhanden. Geben Sie den Wert NODE_HOME\node_modules
an, wobei NODE_HOME
das Installationsverzeichnis Ihres Knotens ist. Auf diesem Pfad legt npm install jedes Modul beim Herunterladen ab.
require.paths
wurde entfernt, verwenden Sie stattdessen die Umgebungsvariable NODE_PATH
.
Setze NODE_PATH=NODE_HOME\node_modules
.
Ich benutze Windows 7 und es funktioniert gut.
Der einfachste Weg, dies zu tun, ist, npm install
aus dem Ordner Ihrer App auszuführen. Dies bedeutet, dass npm alles anschließen muss.
Es ist die letzte Anweisung nach express <appname>
:
...
dont forget to install dependencies:
$ cd <appname> && npm install
Ich habe gulp
installiert und als ich diesen gulp
-Befehl in der Befehlszeile ausführte, erhielt ich einen gulp: command not found
-Fehler. Es schien, dass gulp
in meinem lokalen Ordner installiert wurde, der /home/YOURUSERNAME/.node/lib/node_modules
ist, und nicht im globalen npm
-Ordner.
Sie können den npm
-Stammordner überprüfen, indem Sie folgenden Befehl ausführen: npm root -g
, der mein persönliches Verzeichnis /home/YOURUSERNAME/.node/lib/node_modules
und nicht den erwarteten /usr/local/lib/node_modules
zurückgegeben hat.
Sie können dies beheben, indem Sie den Befehl npm config set prefix /usr/local
ausführen.
für Mac-Benutzer
cd /usr/local/lib/node
Sudo ln -s ../node_modules/* ./$1
Für alle Probleme mit Express mit einem Mac-Computer:
Die Lösung ist:
chown
für Ihren Benutzer den .npm-Ordner:
Sudo chown -R Webmaste /Users/webmaste/.npm/
In Ihrem Testordner oder in Ihrem Ordner:
Sudo npm install -g [email protected]
Rufen Sie den Express von Ihrem aktuellen Standort aus auf:
/usr/local/share/npm/bin/express
Sudo cd . && npm install
Endlich:
node app
die abschließende Nachricht in der Konsole sollte folgendermaßen aussehen:
Express server listening on port 3000 in development mode
Unter Linux ist es schließlich eine gute Möglichkeit, den Befehl zu verwenden: Sudo apt-get install node-express
Bei express 4 müssen wir jedoch den express-generator verwenden, um das App-Skelett zu erstellen, es mit 'npm install express-generator -g' installieren und dann den Befehl 'express myapp' ausführen. siehe auch install express