如何使用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.

`