Error: No default engine was specified and no extension was provided (ExpressJs & nunjucks)

Error: No default engine was specified and no extension was provided (ExpressJs & nunjucks)

我正在尝试将 nunjucks 模板引擎与 Expres js 结合使用。该页面已正确呈现,但错误出现在控制台上。 Error: No default engine was specified and no extension was provided.

来自 nunjucks 文档

var app = express();

nunjucks.configure('views', {
    autoescape: true,
    express: app
});

app.get('/', function(req, res) {
    res.render('index.html');
});

我追踪了错误,发现它来自 at new NunjucksView (C:\Users\future\Desktop\New folder (2)\node_modules\nunjucks\src\express-app.js:13:13)

nodemodules/nunjucks/src/express-app.js中抛出错误

    if (!this.ext && !this.defaultEngine) {
      throw new Error('No default engine was specified and no extension was provided.');
    }

据我了解,这意味着未设置 defaultEngine。

Github Repo


如何在使用 nunjucks 时 设置默认模板引擎。

您应该将 express 的默认 view engine 设置为与 nunjucks

相同的扩展名 known/rendered
const express =  require('express');
const nunjucks = require('nunjucks');

const app = express();

// set default express engine and extension
app.engine('html', nunjucks.render);
app.set('view engine', 'html');

// configure nunjucks engine
nunjucks.configure('views', {
    autoescape: true,
    express: app
});

app.get('/', function(req, res) {
    res.render('index');
});

app.listen(9090, () => {
  console.log('http://localhost:9090')
});

如果你想更改 templates/views 扩展名,你可以这样更改:

app.engine('nunj', nunjucks.render);
app.set('view engine', 'nunj');

然后重命名您的 templates/views index.nunj