无法查看视图

嗨,我试图与使用手柄快车3。 但是我无法“查看视图”,我被这个错误困住了。

Error: Failed to lookup view "500" in views directory "d:\projects\meadowlark\site\views" at EventEmitter.app.render (d:\projects\meadowlark\site\node_modules\express\lib\application.js:519:17) at ServerResponse.res.render (d:\projects\meadowlark\site\node_modules\express\lib\response.js:904:7) at d:\projects\meadowlark\site\meadowlark.js:29:7 at Layer.handle_error (d:\projects\meadowlark\site\node_modules\express\lib\router\layer.js:58:5) at trim_prefix (d:\projects\meadowlark\site\node_modules\express\lib\router\index.js:269:13) at d:\projects\meadowlark\site\node_modules\express\lib\router\index.js:238:9 at Function.proto.process_params (d:\projects\meadowlark\site\node_modules\express\lib\router\index.js:313:12) at d:\projects\meadowlark\site\node_modules\express\lib\router\index.js:229:12 at Function.match_layer (d:\projects\meadowlark\site\node_modules\express\lib\router\index.js:296:3) at next (d:\projects\meadowlark\site\node_modules\express\lib\router\index.js:190:10) 

对我来说真的很奇怪 任何人都可以解释这个问题,我怎么能解决它?

我的js代码如下:

 var express = require('express'); var app = express(); // set up handlebars view engine var handlebars = require('express3-handlebars') .create({ defaultLayout:'main' }); app.engine('handlebars', handlebars.engine); app.set('view engine', 'handlebars'); app.set('port',process.env.port || 3000); app.get('/', function(req, res) { res.render('home'); }); app.get('/about', function(req, res) { res.render('about'); }); // 404 catch-all handler (middleware) app.use(function(req, res, next){ res.status(404); res.render('404'); }); // 500 error handler (middleware) app.use(function(err, req, res, next){ console.error(err.stack); res.status(500); res.render('500'); }); app.listen(app.get('port'),function(){ console.log('Express started on http://localhost: '+ app.get('port') + " Press CTRL+C to terminate."); }); 

我想我知道这里的问题是什么,请记住O'Reilly的一本书(“Web Development with Node&Express”)中的app.js的设置。 以下是作者未能澄清的内容:

如果您在views/layouts/有您的.handlebars模板文件,请像这样构build您的视图引擎设置:

 var path = require('path'); var express = require('express'); var handlebars = require('express-handlebars'); // 'express3-handlebars' has been deprecated var app = express(); // Set up handlebars view engine app.set('views', path.join(__dirname, 'views/layouts/')); app.engine('handlebars', handlebars({defaultLayout: 'main'})); app.set('view engine', 'handlebars'); 

请注意,您将需要var path = require('path'); 为了设置'views'到filepath views/layouts/

如果您阅读错误信息,则会清楚地告诉您在模板目录中缺less500视图模板。 我不知道你的目录结构是什么,但是将一个500.handlebars文件放在500.handlebars文件所在的目录下。 应该在views/views/layouts目录中的某处。

确保您的文件:home.handlebars,about.handlebars,404.handlebars,500.handlebars和main.handlebars 没有隐藏的扩展名 。 像这样:home.handlebars.html,about.handlebars.html,404.handlebars.html,500.handlebars.html和main.handlebars.html。

如果他们这样做,删除这些扩展名,只使用.handlebars扩展应该解决这个问题。