无法在Express中呈现swig模板
所以我试图用consolidate.js来渲染swig模板 ,但是当我尝试从另一个模板“扩展”一个模板时,出现以下错误:
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 %}
然后是一个inheritance模板two.html
:
{% extends 'one.html' %} {% block content %} This is an inner page. {% endblock %}
那么为什么swig会寻找one.html
的path//one.html
(如上面的错误?)感谢您的任何帮助。
在查看swig文档(特别是使用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' });