2014-06-20 2 views
18

Der Titel sagt das meiste Problem. Wenn ich versuche, node . zu laufen erhalte ich:Knoten. und npm Start funktioniert nicht

module.js:340 
    throw err; 
     ^
Error: Cannot find module 'static-favicon' 
    at Function.Module._resolveFilename (module.js:338:15) 
    at Function.Module._load (module.js:280:25) 
    at Function.Module.runMain (module.js:497:10) 
    at startup (node.js:119:16) 
    at node.js:902:3 

Es scheint tatsächlich keine Module seinen Ordner. Ich renne gerade express in einem leeren Verzeichnis

npm funktioniert aber gut. Dies ist mit einer frischen Express-Installation, wenn es darauf ankommt. Jede Hilfe wäre toll, danke!

die vollständigen Fehlermeldungen:

new-host-2:~ Brennan$ cd Desktop/ 
new-host-2:Desktop Brennan$ mkdir test4 
new-host-2:Desktop Brennan$ cd test4 
new-host-2:test4 Brennan$ express -e 

    create : . 
    create : ./package.json 
    create : ./app.js 
    create : ./public 
    create : ./public/javascripts 
    create : ./public/images 
    create : ./public/stylesheets 
    create : ./public/stylesheets/style.css 
    create : ./routes 
    create : ./routes/index.js 
    create : ./routes/users.js 
    create : ./views 
    create : ./views/index.ejs 
    create : ./views/error.ejs 
    create : ./bin 
    create : ./bin/www 

    install dependencies: 
    $ cd . && npm install 

    run the app: 
    $ DEBUG=test4 ./bin/www 

new-host-2:test4 Brennan$ node app.js 

module.js:340 
    throw err; 
     ^
Error: Cannot find module 'static-favicon' 
    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> (/Users/Brennan/Desktop/test4/app.js:3:15) 
    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) 
    at Function.Module.runMain (module.js:497:10) 
new-host-2:test4 Brennan$ npm start app.js 
npm ERR! Error: ENOENT, open '/Users/Brennan/Desktop/test4/node_modules/app.js/package.json' 
npm ERR! If you need help, you may report this *entire* log, 
npm ERR! including the npm and node versions, at: 
npm ERR!  <http://github.com/npm/npm/issues> 

npm ERR! System Darwin 12.4.0 
npm ERR! command "node" "/usr/local/bin/npm" "start" "app.js" 
npm ERR! cwd /Users/Brennan/Desktop/test4 
npm ERR! node -v v0.10.26 
npm ERR! npm -v 1.4.7 
npm ERR! path /Users/Brennan/Desktop/test4/node_modules/app.js/package.json 
npm ERR! code ENOENT 
npm ERR! errno 34 
npm ERR! 
npm ERR! Additional logging details can be found in: 
npm ERR!  /Users/Brennan/Desktop/test4/npm-debug.log 
npm ERR! not ok code 0 
new-host-2:test4 Brennan$ forever app.js 
warn: --minUptime not set. Defaulting to: 1000ms 
warn: --spinSleepTime not set. Your script will exit if it does not stay up for at least 1000ms 

module.js:340 
    throw err; 
     ^
Error: Cannot find module 'static-favicon' 
    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> (/Users/Brennan/Desktop/test4/app.js:3:15) 
    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) 
    at Function.Module.runMain (module.js:497:10) 
error: Forever detected script exited with code: 8 
+0

Führen Sie "Knoten App". – Michael

+0

I rand 'node app' und es gab den gleichen Fehler. Eigentlich ist es ein Fehler auf dem 'Error: Kann das Modul 'static-favicon' nicht finden. – Bren

+0

Welche Version von Expressjs verwenden Sie? – Michael

Antwort

34

Nachdem Sie die Knotenanwendung mit der express-generator generiert haben, müssen Sie die Abhängigkeiten für das Projekt installieren. Dies erfolgt über:

$ npm install 

Sobald dies erledigt ist, können Sie die App starten npm mit:

$ npm start 

standardmäßig die ausdrückliche erzeugte Apps dies als die für npmstart Befehl angeben (Sie können sehen dies in der package.json-Datei):

"start": "node ./bin/www" 

Also das gleiche über die Befehlszeile auszuführen, würden Sie laufen:

$ node ./bin/www 
+0

Nun npm kann starten, aber nicht Knoten oder für immer. Aber das ist alles was ich brauche, also akzeptiere ich die Antwort. Ich dachte, Express installiert automatisch die Module und da war es nicht, dass etwas falsch war. Obwohl ich es in einer App verwendet habe, die vorher funktioniert hat, weiß ich wirklich nicht genau, warum das dabei geholfen hat. Hmmm. Vielen Dank! – Bren

+0

Wenn Sie "npm start" ausführen, führen Sie wirklich 'node./Bin/www' aus (was ich oben in meiner Antwort zu sagen versuchte). – dylants

1

a dir Baum gegeben wie:

myapp 
- lib 
    - favicon.ico 
- app.js 
- package.json 
- node_modules (npm installs all modules in here) 

wenn Sie versuchen, favicon.ico in Ihrem app.js

var express = require('express'), 
    fs = require('fs'); // this is for reading static files 

var favicon = require(fs.readFileSync('./lib/favicon.ico')); 

zugreifen Die Variable für Favicon ist möglicherweise nicht das, was Sie erwarten. Der beste Weg, statische Dateien zu dienen wäre ein statisches Verzeichnis mit einer Route einzurichten, so dass jeder diesen Weg mit einem param schlagen wird, dass Dateien: zum Beispiel:

https://mynodeapp.com/static/images/{param} 

wo param der Name der Datei sein würden (Dies ist ein Beispiel für die Verwendung von Hapi - Express hat ähnliche Funktionen für statische Dateien.

+0

Es scheint keine Module Ordner zu geben, so dass nichts zu benötigen. Soll man nicht einen ausdrücken? Die Zeile ist zur Zeit 'var favicon = require ('static-favicon');'. – Bren

+0

wo ist statisch-favicon? im selben Verzeichnis? './thepath' ein Verzeichnis hoch? '../thepath' – Dan

+0

Ehrlich gesagt, ich bin neu zu Knoten, so weiß ich nicht. Ist es ein lokales oder ein globales Modul? Es scheint nicht in einer der einfachen Express-Apps zu sein, die ich gemacht habe. – Bren

0

Verwenden Sie serve-favicon anstelle von statisch-favicon. Überprüfen Sie auch, ob Sie serve-favicon korrekt installiert haben. Führen Sie cd serve-favicon aus, überprüfen Sie package.json, und führen Sie dann npm install aus, um alle Abhängigkeiten ordnungsgemäß zu installieren.

0

npmstart tun, die alle notwendigen Module für das Projekt installiert

5

ich hatte das gleiche Problem nach dem in node_modules den Express-Generator auf einem nicht-leeres Verzeichnis mit einigen Knoten bereits installierten Module laufen, vor allem sich selbst auszudrücken. nuke einfach den Ordner, installieren Sie alle Ihre Abhängigkeiten und Sie sollten gut gehen:

rm -rf ./node_modules 
npm install 
npm start 

EDIT: Tun heraus, dass zu irgendeinem Zeitpunkt in dem Prozess hatte ich serve-favicon installiert und gespeichert, dass auf dem lokalen package.json .Sieht so aus, als ob der Express-Generator diese Abhängigkeit nicht hinzufügen konnte. Daher:

npm install serve-favicon --save 
npm start