错误:无法查找视图

mac*_*chu 3 node.js express

如果我尝试打开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');
});
Run Code Online (Sandbox Code Playgroud)

这是我的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": {}
}
Run Code Online (Sandbox Code Playgroud)

Mri*_*jay 8

这是问题所在.

改变这一行

app.set('views', __dirname + 'testapp/views');
Run Code Online (Sandbox Code Playgroud)

app.set('views', __dirname + 'views');
Run Code Online (Sandbox Code Playgroud)

因为当你说它__dirname + 'views'看起来{appName}/views/fileToRender.但因为你说它__dirname + 'testapp/views'会搜索 {appName}/testapp/views/fileToRender.