我有一个包含Express的Node应用程序。到目前为止,我一直在使用Swig作为我的视图引擎。我像这样配置了这个视图引擎:
app.engine('html', swig.renderFile);
app.set('views', path.join(__dirname, '../views'));
app.set('view engine', 'html');
这种方法对我有用。但是,由于Swig已被弃用,我试图转向Nunjucks。为了做到这一点,我做了以下事情:
nunjucks.configure('views', {
autoescape: true,
cache: false,
express: app
});
app.engine('html', nunjucks.render);
app.set('views', path.join(__dirname, '../views'));
app.set('view engine', 'html');
这不起作用。我收到运行时错误,但我无法告诉实际发生了什么错误。在尝试加载最基本的视图时,我尝试加载以下HTML页面:
<!DOCTYPE html>
<html lang="en">
<head>
</head>
<body>
<h1>Hello</h1>
</body>
</html>
这是一个非常基本的HTML视图,不使用任何模板。我只是希望能够加载一个HTML视图,并将nunjucks设置为视图引擎。即便如此,我仍然会收到错误。
我可以看到render function有一个回调。看起来回调有一个我可以看到的错误对象。但是,我不知道如何在app.engine('html', nunjucks.render);
行中实际使用该回调。
非常感谢任何见解
答案 0 :(得分:4)
删除以下行:
app.engine('html', nunjucks.render);
app.set('views', path.join(__dirname, '../views'));
app.set('view engine', 'html');
更新代码:
var nunjucks = require('nunjucks');
var app = express();
// looks for html in views folder relative to current working directory
nunjucks.configure('views', {
autoescape: true,
cache: false,
express: app
});
app.get('/', function(req, res) {
res.render('index.html');
});
答案 1 :(得分:0)
对于带有Nunjucks 3.0.1的Express 4.15.3,我需要以下配置。
// view engine setup
app.set('views', path.join(__dirname, 'views'));
nunjucks.configure('views', {
autoescape: true,
cache: false,
express: app
});
app.set('view engine', 'html');