我有一个Node.js应用程序。我已经构建了这个应用程序一段时间,目前它使用Swig作为视图引擎。我使用以下代码将其设置为视图引擎:

// Use swig.
const swig = require('swig');
app.engine('html', swig.renderFile);
if (app.get('env') === 'development') {
  swig.setDefaults({ cache: false });
}

app.set('views', path.join(__dirname, '../views'));
app.set('view engine', 'html');


这一直很好。但是,我有一些停机时间,因此我认为现在是迁移到Nunjucks的好时机。因此,我将以上内容替换为:

// Use nunjucks.
const nunjucks = require('nunjucks');
app.engine('html', nunjucks.renderFile);
if (app.get('env') === 'development') {
  nunjucks.setDefaults({ cache: false });
}
app.set('views', path.join(__dirname, '../views'));
app.set('view engine', 'html');


当我启动网站时,现在出现错误。错误是:

    throw new Error('callback function required');
    ^

Error: callback function required
    at EventEmitter.engine (C:\MyProject\node_modules\express\lib\application.js:294:11)
    at EventEmitter.module.exports (C:\MyProject\src\index.js:16:9)
    at EventEmitter.configure
...


我究竟做错了什么?正在寻求什么回调?我知道一旦开始使用Nunjucks引擎,我将遇到一些语法错误。但是,我只是想弄清楚如何加载Nunjucks引擎。

最佳答案

模板引擎通常具有自己的配置方法。对于Nunjucks,您应该使用以下命令:

const nunjucks = require('nunjucks');

nunjucks.configure('views', {
  express : app,
  noCache : app.get('env') === 'development',
  ...
});


文档here

09-25 19:14