2015-11-10 33 views
0

我得到一個module.js:339拋出err;爲什麼我的代碼會引發錯誤?

我不確定哪條線或哪裏可以修復它。如果我能指出正確的方向,我想我會解決它。我正在尋找錯誤的信息,我似乎可以弄清楚爲什麼以及如何以及如何解決錯誤。

var bodyParser = require('body-parser'); 
 
var express = require('express'); 
 
var mongoose = require('mongoose'); 
 

 
var Schema = mongoose.Schema; 
 
var ObjectId = Schema.ObjectId; 
 

 
var User = mongoose.model('User', new Schema({ 
 
\t id: ObjectId, 
 
\t firstName: String, 
 
\t lastName: String, 
 
\t email: { type: String, unique: true }, 
 
\t password: String, 
 
})); 
 

 
var app = express(); 
 
app.set('view engine', 'jade'); 
 
app.locals.pretty = true; 
 

 
// conenct to mongo 
 
mongoose.connect('mongodb://localhost/auth'); 
 

 
// middleware 
 
app.use(bodyParser.urlencoded({ extended: true })); 
 

 
app.get('/', function(req, re6s) { 
 
\t res.render('index.jade'); 
 
}); 
 

 
app.get('/register', function(req, res) { 
 
\t res.render('register.jade'); 
 
}); 
 

 
app.post('/register', function(req, res) { 
 
\t var user = new User({ 
 
\t \t firstName: req.body.firstName, 
 
\t \t lastName: req.body.lastName, 
 
\t \t email: req.body.email, 
 
\t \t password: req.body.password 
 
\t }); 
 
\t user.save(function(err) { 
 
\t \t if (err) { 
 
\t \t \t var err = "Something bad happened! Try again!"; 
 
\t \t \t if (err.code === 11000) { 
 
\t \t \t \t error = "That email is already taken. Try another."; 
 
\t \t \t } 
 
\t \t \t res.render("register.jade", { error: error }); 
 
\t \t } else { 
 
\t \t \t res.redirect("/dashboard"); 
 
\t \t } 
 
\t }); 
 
}); 
 

 
app.get('/login', function(req, res) { 
 
\t res.render('login.jade'); 
 
}); 
 

 
app.get('/dashboard', function(req, res) { 
 
\t res.render('dashboard.jade'); 
 
}); 
 

 
app.get('/logout', function(req, res) { 
 
\t res.redirect('/'); 
 
}); 
 

 
app.listen(3000);

完整的錯誤信息:

>node app.js 
module.js:339 
    throw err; 
    ^

Error: Cannot find module 'express' 
    at Function.Module._resolveFilename (module.js:337:15) 
    at Function.Module._load (module.js:287:25) 
    at Module.require (module.js:366:17) 
    at require (module.js:385:17) 
    at Object.<anonymous> (C:\Users\mechart\Desktop\auth\app.js:2:15) 
    at Module._compile (module.js:435:26) 
    at Object.Module._extensions..js (module.js:442:10) 
    at Module.load (module.js:356:32) 
    at Function.Module._load (module.js:311:12) 
    at Function.Module.runMain (module.js:467:10) 
+1

如果你看一下錯誤堆棧跟蹤你最終應該找到一行提到你的文件之一(如果堆棧調用不太深)。除此之外,完整的錯誤信息是什麼意思? –

+0

是的,我發佈了它,但我真的是新的......試圖在一般的編程環境中進行導航。 – prexcel2215

回答

1

Can't find module 'Express'意味着,Express模塊​​安裝不正確的是從項目到達的路徑。您需要使用NPM安裝該模塊。與您在此項目中使用的任何其他模塊相同。它應該是爲改變你的應用程序的目錄,然後在控制檯發出以下命令即可:

npm install express 

有還有另一個錯誤應該是固定的。

重複的變量定義會導致錯誤處理無法工作

在這段代碼中,有一個名爲err參數,然後你也有var err。這將使它所以你的觀點被覆蓋的局部聲明var和錯誤處理將無法正常工作:

更改此:

user.save(function(err) { 
    if (err) { 
     var err = "Something bad happened! Try again!"; 
     if (err.code === 11000) { 
      error = "That email is already taken. Try another."; 
     } 
     res.render("register.jade", { error: error }); 
    } else { 
     res.redirect("/dashboard"); 
    } 
}); 

這樣:

user.save(function(err) { 
    if (err) { 
     // change this variable name to errMsg in each place you use it 
     var errMsg = "Something bad happened! Try again!"; 
     if (err.code === 11000) { 
      errMsg = "That email is already taken. Try another."; 
     } 
     res.render("register.jade", { error: errMsg }); 
    } else { 
     res.redirect("/dashboard"); 
    } 
}); 
+0

我將var err更改爲錯誤,併爲npm install jade添加了它。 G – prexcel2215

相關問題