我得到一个 module.js:339 throw 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({
id: ObjectId,
firstName: String,
lastName: String,
email: { type: String, unique: true },
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) {
res.render('index.jade');
});
app.get('/register', function(req, res) {
res.render('register.jade');
});
app.post('/register', function(req, res) {
var user = new User({
firstName: req.body.firstName,
lastName: req.body.lastName,
email: req.body.email,
password: req.body.password
});
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");
}
});
});
app.get('/login', function(req, res) {
res.render('login.jade');
});
app.get('/dashboard', function(req, res) {
res.render('dashboard.jade');
});
app.get('/logout', function(req, res) {
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)
最佳答案
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");
}
});
关于javascript - 为什么我的代码会抛出错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33622097/