2012-12-17 138 views
5

所以我试图用consolidate.js呈现swig templates与快递,但我得到以下错误,当我尝试“扩展”从另外一个模板:无法呈现痛饮模板快速

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

在我app.js文件我设置痛饮作为我的渲染引擎(仅包括相关的代码):

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 %} 

那么,为什么痛饮找one.html//one.html路径(如上面的错误?)感谢您的帮助。

回答

11

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

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' }); 
+5

你不需要使用整合,只需[使用'swig.renderFile'as引擎](http://paularmstrong.github.io/swig/docs/#express)=>'app.engine('html',swig.renderFile);' – laconbass

+1

请注意'swig.init'在最新版本的swig中已弃用。有关其他选项,请参见[swig文档](http://paularmstrong.github.io/swig/docs/api/#SwigOpts) – user1534980