在子目录中找不到Jade布局

Sve*_*ven 6 node.js express pug

我的设置:

我的目录structrue如下所示:

/views/
   |-- index.jade
   |-- layout.jade
   /account/
      |-- login.jade
      |-- register.jade
Run Code Online (Sandbox Code Playgroud)

我已经配置了我的视图引擎,如下所示:

app.set('view engine', 'jade');
Run Code Online (Sandbox Code Playgroud)

编辑:我也有

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

我的控制器看起来像:

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"});
});
Run Code Online (Sandbox Code Playgroud)

我的问题

使用描述的设置我收到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)
Run Code Online (Sandbox Code Playgroud)

只要我将layout.jade文件复制到/account/文件夹中,它就能完美运行.不幸的是,这没有任何意义,因为它迫使我有冗余的布局文件.

我错过了什么?


顺便说一句.这个代码snipplet来自AzzNomad的express / mongoose 模板,这对于用mongoose 学习表达是非常有帮助的.

Had*_*iri 6

你需要把

extends ../layout

在帐户下的视图中,因为布局不在同一文件夹中.