Node.js - 在 Express 中从 Swig 迁移到 Nunjucks

标签 node.js express viewengine

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

// 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 .

关于Node.js - 在 Express 中从 Swig 迁移到 Nunjucks,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39452819/

相关文章:

javascript - AngularJS - 三个依赖选择 - 只有前两个填充

javascript - 失踪 child

node.js - 使用快速验证器 typescript 定义

node.js - 使用 ejs View 助手添加字段属性

.net - 为 Visual Studio 安装 Razor View 引擎

ASP.NET Web 表单渲染引擎输出控制树?寻找有关渲染逻辑的信息

javascript - 在没有适当功能的情况下开 Jest 测试 Lambda? Node.js

javascript - 在node.js --prof 输出中,这个名字奇怪的C++ 函数在做什么?

javascript - “发送到客户端后无法设置 header ” - 我正在设置 header ,但找不到位置

asp.net-mvc - 什么是 ASP.Net MVC View 引擎?