javascript - 在 Express 应用程序中使用 Nunjucks

标签 javascript node.js express

我有一个包含 Express 的 Node 应用程序。到目前为止,我一直在使用 Swig 作为我的 View 引擎。我这样配置这个 View 引擎:

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');    

这行不通。我收到运行时错误,但我无法判断实际抛出的错误是什么。为了加载最基本的 View ,我尝试加载以下 HTML 页面:

<!DOCTYPE html>
<html lang="en">
<head>
</head>
<body>
  <h1>Hello</h1>
</body>
</html>

这是一个非常基本的 HTML View ,不使用任何模板。我只想加载一个 HTML View ,并将 nunjucks 设置为 View 引擎。即使这样,我仍然会遇到错误。

我可以看到 render function , 有一个回调。看起来回调有一个我可以查看的错误对象。但是,我不知道如何在 app.engine('html', nunjucks.render); 行中实际使用该回调。

任何见解将不胜感激

最佳答案

删除这些行:

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');
});

关于javascript - 在 Express 应用程序中使用 Nunjucks,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39781767/

相关文章:

node.js - npm install bower 使用 -g 与 --save-dev

javascript - 在 Javascript 中处理数据库查询

javascript - regex.test() 函数没有给出正确的结果

javascript - 如何让 DataMaps 在浏览器中显示?

javascript - 如何确保浏览器和 Node.js 的 JavaScript 库的兼容性

mysql - MySQL 表中的阿拉伯文本?

javascript - 如何在客户端实现 JSON Web token - Node.js

javascript - 无法将文本附加到 d3.js 强制布局节点

javascript - sails.js - 需要来自同一浏览器的多个 session

node.js - res.send,之后如何退出?