2012-03-17 13 views
5

Sto scherzando con Node.js per la prima volta e ho deciso di creare un'applicazione semplice usando express. Ho seguito le istruzioni da github in una directory vuota in questo modo:Ottenere un errore durante l'esecuzione del progetto Express di base

npm install -g express 
express 
npm install -d 
node app.js 

Durante la navigazione verso localhost:3000 ottengo l'errore seguente:

Express 
500 Error: Cannot find module './lib/jade' 
at Function._resolveFilename (module.js:332:11) 
at Function._load (module.js:279:25) 
at Module.require (module.js:354:17) 
at require (module.js:370:17) 
at Object. (C:\dev\gravity_kata\node_modules\jade\index.js:4:5) 
at Module._compile (module.js:441:26) 
at Object..js (module.js:459:10) 
at Module.load (module.js:348:31) 
at Function._load (module.js:308:12) 
at Module.require (module.js:354:17) 

Quando si cerca sotto node_modules\jade\lib vedo tutti i file di libreria di Jade, ma no cartella jade. Così ho creato una cartella sotto lib chiamato jade e spostato i file della libreria lì e ora funziona la mia applicazione predefinita.

Ora, visto che non ho quasi nessuna esperienza con Node.js ed Express, sono abbastanza sicuro di aver fatto qualcosa di sbagliato. Qualcuno ha idea di cosa sta succedendo qui?

Edit:

mi sono tuffato nel codice di Giada. Sotto il file index.js di Jade richiede lib\jade e guardando sotto la cartella lib, non c'era il file jade.js. Bene, questo è il problema, ma perché manca il file jade.js? Quando si estrae la Jade source da npm, c'è un file jade.js nella directory lib. Ho copiato la cartella lib dalla sorgente scaricata nel modulo Jade per il mio progetto e ora funziona bene.

Quindi, per qualche motivo, npm non sta tirando giù il file jade.js. La versione nel file packages.json corrisponde alla fonte che ho tirato giù, 0.21.0. Qualcuno ha un'idea sul perché questo è successo?

+1

Sembra che sia un problema di jade o espresso. Prova ad immergerti nel codice ... –

+0

Ho modificato la mia risposta su ciò che ho trovato dopo aver inserito il codice. – JChristian

+0

Il download dal sorgente e l'estrazione hanno funzionato per me. Grazie per aver segnalato il file mancante. Deve essere un bug con NPM/Jade. – foobar

risposta

2

Per me, su Windows, la versione 0.22.0 di jade ha risolto il problema.

+0

Deve essere stato un errore in giada, perché la versione 0.22.0 ha risolto il problema anche per me. – JChristian

2

probabilmente ha a che fare con il fatto che hai installato Express globalmente (-g), ma lo npm install -d è stato eseguito localmente. cercare di installarli sia a livello globale, o come preferirei, sia a livello locale:

sudo npm uninstall express -g 
npm install express 
npm install jade (or npm install -d) 
+1

L'installazione di express globalmente consente l'accesso all'eseguibile. Ho rimosso Express globalmente, ma express e jade erano già installati localmente. Sto ancora ricevendo lo stesso errore. – JChristian

11

cd alla cartella del progetto esplicito ed eseguire "NPM install", questo installerà tutte le dipendenze

+0

Quando dici express project folder, intendi la directory '/ node_modules/express'? – JChristian

+0

stai usando linux o windows? Diciamo che crea un progetto sul desktop utilizzando esprimono TestProject poi cd TestProject npm installare – gastonfartek

+0

im mi dispiace non va bene con i commenti, i si ri scrivere quel commento – gastonfartek

0

davvero fare in modo che tutti il modulo require s è corretto. Javascript è molto divertente nel dirti cosa c'è di sbagliato. Prova a rimuovere la linea del modello di giada e guarda cosa succede allora.

0

Ho appena trovato questo problema con l'errore del modulo jade. Sembra che la cartella jade non sia stata creata automaticamente (una specie di bug). Ora ho risolto questo problema con reinstallare jade. Successivamente la cartella jade è stata creata automaticamente. usa npm uninstall gulp-jade e quindi installa nuovamente gulp-jade

Problemi correlati