2015-11-10 34 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

相关问题