【问题标题】:Jade layout can not be found in subdirectory在子目录中找不到 Jade 布局
【发布时间】:2012-05-15 09:23:57
【问题描述】:

我的设置:

我的目录结构如下:

/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/ 文件夹中,它就可以完美运行。不幸的是,这没有任何意义,因为它迫使我拥有多余的布局文件。

我错过了什么?


顺便说一句。此代码片段来自 AzzNomad 的express/mongoose template,这对于学习猫鼬表达非常有帮助。

【问题讨论】:

    标签: node.js express pug


    【解决方案1】:

    您还应该设置视图路径,因为它位于应用程序脚本之外的另一个目录中。

    app.set('views', __dirname + '/views');
    

    【讨论】:

    • 忘了添加这个,但我已经将它添加到我的代码中,所以这里还有一些我遗漏的东西。还有什么建议吗? :-)
    【解决方案2】:

    你需要放

    extends ../layout

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

    【讨论】:

    • 完全为我工作:我认为我正在 AJAXing 到另一个页面并希望它在 Jade 中/从视图/部分提供 - 所以请确保正确附加任何扩展/包含。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-09-11
    • 2018-12-31
    • 1970-01-01
    • 2018-10-30
    • 1970-01-01
    • 2011-05-23
    • 2014-03-26
    相关资源
    最近更新 更多