【问题标题】:Cannot render swig templates in Express无法在 Express 中呈现 swig 模板
【发布时间】:2012-12-04 04:07:00
【问题描述】:

所以我尝试使用consolidate.js 来使用express 渲染swig templates,但是当我尝试从另一个模板“扩展”一个模板时出现以下错误:

Error: ENOENT, no such file or directory '//one.html

在我的app.js 文件中,我将 swig 设置为我的渲染引擎(仅包括相关代码):

var consolidate = require('consolidate');

app.set('view engine', 'html');
app.set('views', __dirname + '/views');
app.engine('.html', consolidate.swig);

app.get('/test', function(req, res) {
    res.render('two');
});

我有一个基本模板,one.html

<h3>My Site</h3>
{% block content %}
    Welcome
{% endblock %}

然后是继承模板,two.html

{% extends 'one.html' %}

{% block content %}
    This is an inner page.
{% endblock %}

那么为什么 swig 会寻找路径为 //one.htmlone.html(就像上面的错误一样?)感谢您的帮助。

【问题讨论】:

    标签: javascript node.js express swig-template


    【解决方案1】:

    在查看 swig 文档(特别是 section on usage with Express)后想通了。我所要做的就是初始化 swig,并告诉它在哪里寻找“扩展”模板:

    var consolidate = require('consolidate'),
        swig = require('swig');
    
    app.set('view engine', 'html');
    app.set('views', __dirname + '/views');
    app.engine('.html', consolidate.swig);
    
    app.get('/test', function(req, res) {
        res.render('two');
    });
    
    /* Tell swig where to look for templates when one extends another. */
    swig.init({ root: __dirname + '/views' });
    

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-12-06
    • 1970-01-01
    • 1970-01-01
    • 2018-11-09
    • 1970-01-01
    • 2016-09-18
    • 2021-02-14
    • 1970-01-01
    相关资源
    最近更新 更多