如果我尝试打开localhost:3000或localhost:3000 / login,则会出现以下错误。有人可以帮我解决问题吗?这很奇怪。非常感谢
我的代码
var express = require('express');
var crypto = require('crypto');
var bodyParser = require('body-parser');
var flash = require('connect-flash');
var cookieParser = require('cookie-parser');
var session = require('express-session');
var path = require ('path');
var port = process.env.PORT || 3000;
var MongoClient = require('mongodb').MongoClient,
ObjectID = require('mongodb').ObjectID,
url = require('url');
var db;
//var mongo;
//var collection;
//dataExt = require('./routes/serverExtend');
// setup middleware
var app = express();
app.use(bodyParser());
app.use(flash());
app.use(cookieParser('secret'));
app.use(session({cookie: { secret: 'keyboard cat', maxAge: 60000 }}));
app.use(express.static(__dirname + 'public')); //setup static public directory
app.set('views', __dirname + 'testapp/views'); //optional since express defaults to CWD/views
app.set('view engine', 'ejs');
// Start server
app.listen(port);
console.log('App started on port ' + port);
// Initialize connection once
MongoClient.connect("mongodb://localhost:27017/testDB", function(err, database) { //"mongodb://localhost:27017/test"
if(err) throw err;
db = database;
});
app.get('/', function(req, res) {
res.render('index.ejs', { message: req.flash('signupMessage')}); // load the index.ejs file
app.get('/login', function(req, res) {
res.render('login.ejs');
});
这是我的package.json
{
"name": "NodejsStarterApp",
"version": "0.0.1",
"description": "A sample nodejs"
"dependencies": {
"express" : "~4.0.0",
"ejs" : "*",
"mongodb":"*",
"connect-flash" : "~0.1.1",
"morgan": "~1.0.0",
"body-parser": "*",
"cookie-parser": "~1.0.0",
"express-session": "~1.0.0"
},
"engines": {
"node": "0.10.26"
},
"repository": {}
}
答案 0 :(得分:8)
这是问题所在。
更改此行
app.set('views', __dirname + 'testapp/views');
到
app.set('views', __dirname + 'views');
因为当你只说__dirname + 'views'
时它会在{appName}/views/fileToRender
中查找。但是因为您说__dirname + 'testapp/views'
它会搜索{appName}/testapp/views/fileToRender
。