【问题标题】:Node.js - Migrating from Swig to Nunjucks in ExpressNode.js - 在 Express 中从 Swig 迁移到 Nunjucks
【发布时间】:2016-09-12 14:33:57
【问题描述】:

我有一个 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 引擎。

【问题讨论】:

    标签: node.js express viewengine


    【解决方案1】:

    模板引擎通常有自己的配置方法。对于 Nunjucks,你应该使用这个:

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

    文档here

    【讨论】:

      猜你喜欢
      • 2018-10-25
      • 1970-01-01
      • 2021-07-02
      • 2018-09-20
      • 1970-01-01
      • 2021-10-08
      • 2023-03-05
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多