如何使用Express 4呈现Swig模板?
我无法使用Express for Node使用Swig模板。 我得到以下错误:
Error: Failed to lookup view "index" in views directory
Swig模板没有被编译到.html文件中
我的代码如下:
var express = require('express'); var cons = require('consolidate'); var swig = require('swig'); var app = express(); //Set template engine app.engine('html', cons.swig); app.set('view engine', 'html'); app.set('views', __dirname + '/views') // Disable Express's and Swig Cache app.set('view cache', false); swig.setDefaults({ cache: false }); app.get('/', function(req, res){ res.render('index', {'title': 'Design'}); }); app.listen(3000);
我只是有同样的问题。 为了使用swig扩展工作的swig模板,您可以按照swig Docs ,然后用app.engine('html', cons.swig); app.set('view engine', 'html');
replace下面两行app.engine('html', cons.swig); app.set('view engine', 'html');
app.engine('html', cons.swig); app.set('view engine', 'html');
与app.engine('swig',swig.renderFile); app.set('view engine', 'html');
app.engine('swig',swig.renderFile); app.set('view engine', 'html');
应该看起来像这样。
var express = require('express'); var swig = require('swig'); var app = express(); // view engine setup // This is where all the magic happens! app.engine('swig', swig.renderFile); app.set('view engine', 'swig'); app.set('views', path.join(__dirname, 'views')); app.set('view cache', false); swig.setDefaults({ cache: false });
如这里所解释的:
http://mherman.org/blog/2015/08/23/primer-on-swig-templating/#.VhWxVvlVhBc
只需使用.html
文件而不是.swig
文件。 我不知道你在哪里使用.swig
文件的想法。 也许是旧版本? 我不知道。 当前Swig的文档Basic Usage也显示使用.html
文件:
http://paularmstrong.github.io/swig/docs/
如果您将index.swig
重命名为index.html
我希望它能正常工作。
是的,如果使用SWIG作为模板引擎,我认为将模板存储为.swig文件更具语义。 所以,你所需要的就是把“嗖”作为引擎:
// view engine setup app.engine('swig', swig.renderFile); app.set('view engine', 'swig'); app.set('views', path.join(__dirname, 'views'));
然后,您可以存储您的意见,如./views/layout.swig
对于最新版本的swig,我们需要包含需要通过包pipe理器或package.json文件安装的swig包
var express = require('express');
var swig = require('swig');
var app = express();
// Here we need to set up and engine as per latest version of swig //for latest version of swig we need to include swig package which //needed to installed through package manager or package.json file
app.engine('swig', swig.renderFile);
app.set('view engine', 'swig');
app.set('views', path.join(__dirname, 'views'));
app.set('view cache', false);
swig.setDefaults({ cache: false });
//Here we are setting cache defaults to false.
`