我的目录structrue如下所示:
/views/
|-- index.jade
|-- layout.jade
/account/
|-- login.jade
|-- register.jade
我已按如下方式配置了我的视图引擎:
app.set('view engine', 'jade');
编辑:我也有
app.set('views', __dirname + '/views');
我的控制器看起来像:
app.get('/login', redirectIfLogined, function(req, res){
res.render('account/login', { title: "Login", redir: req.query.redir});
});
app.get('/register', redirectIfLogined, function(req, res) {
res.render('account/register', { title: "Register"});
});
使用上述设置我收到500错误:
500 Error: failed to locate view "layout"
at Function.compile (D:\dev\Azznomad\express-template\node_modules\express\lib\view.js:58:15)
at ServerResponse._render (D:\dev\Azznomad\express-template\node_modules\express\lib\view.js:414:18)
at ServerResponse.render (D:\dev\Azznomad\express-template\node_modules\express\lib\view.js:315:17)
at ServerResponse._render (D:\dev\Azznomad\express-template\node_modules\express\lib\view.js:429:10)
at ServerResponse.render (D:\dev\Azznomad\express-template\node_modules\express\lib\view.js:315:17)
at D:\dev\Azznomad\express-template\controllers\accountController.js:6:13
at callbacks (D:\dev\Azznomad\express-template\node_modules\express\lib\router\index.js:272:11)
at D:\dev\Azznomad\express-template\modules\middleware\account.js:27:9
at callbacks (D:\dev\Azznomad\express-template\node_modules\express\lib\router\index.js:272:11)
at param (D:\dev\Azznomad\express-template\node_modules\express\lib\router\index.js:246:11)
只要我将layout.jade
文件复制到/account/
文件夹中,它就能完美运行。不幸的是,这没有任何意义,因为它迫使我有冗余的布局文件。
我缺少什么?
顺便说一下。这段代码snipplet来自AzzNomad的express/mongoose template,这对于用猫鼬学习表达非常有帮助。
答案 0 :(得分:6)
你需要把
extends ../layout
在帐户下的视图中,因为布局不在同一文件夹中。
答案 1 :(得分:1)
您还应该设置视图路径,因为它位于应用程序脚本之外的另一个目录中。
app.set('views', __dirname + '/views');