You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用express-handlebars报错engine is not defined是什么原因

报错原因
  • 代码中仅将express-handlebars模块整体导入赋值给了exphbs变量,从未声明过名为engine的独立变量,直接调用engine()会直接触发引用不存在变量的ReferenceError。
  • express-handlebars不同大版本的导出规则存在差异:v6及以上新版本默认导出的是引擎创建函数,v5及更早旧版本导出的是挂载了engine方法的对象,无论哪个版本都不会自动注入全局的engine标识符供直接调用。
修复方法

根据你安装的版本选择对应写法即可:

  • v6及以上新版本(当前npm默认安装的主流版本):直接用导入的exphbs变量作为引擎函数调用
const express = require("express");
const exphbs = require('express-handlebars');
const app = express();

app.engine('.hbs', exphbs({defaultLayout: 'main', extname: '.hbs'}));
app.set('view engine', '.hbs');
  • v5及更早旧版本:从导入的模块上取engine方法调用,推荐用解构写法
const express = require("express");
const { engine } = require('express-handlebars');
const app = express();

app.engine('.hbs', engine({defaultLayout: 'main', extname: '.hbs'}));
app.set('view engine', '.hbs');

不确定本地安装版本时,优先使用上述解构导入engine的写法,v3至最新版本的express-handlebars都兼容该写法,不会出现导出结构不匹配的问题。

内容的提问来源于stack exchange,提问作者Spect

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.30 10:15:37