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

配置express-handlebars时报错TypeError: handlebars is not a function如何解决

报错原因

你安装的是express-handlebars v6.0及以上版本,该版本调整了模块导出规则,不再默认导出可直接调用的构造函数,仅旧的v5.x及更早版本支持直接调用require('express-handlebars')返回的对象。讲师代码可正常运行是因为其使用的是旧版依赖。

解决方案

方案1:适配新版本(推荐)

修改handlebars初始化代码即可,有两种等价写法:

写法1:解构引入engine方法

// 将原引入行修改为解构写法
const { engine } = require('express-handlebars');
// 注册模板引擎
app.engine("handlebars", engine())
app.set("view engine", "handlebars")

写法2:调用导出对象下的engine属性

const handlebars = require('express-handlebars');
// 调用对象下的engine方法而非直接调用handlebars本身
app.engine("handlebars", handlebars.engine())
app.set("view engine", "handlebars")

如果需要自定义模板配置(如默认布局、路径、后缀名等),直接向engine()方法传入配置对象即可:

app.engine("handlebars", engine({
  layoutsDir: "./views/layouts",
  defaultLayout: "main",
  extname: ".hbs"
}))

方案2:降级到旧版本

如果希望完全沿用原有代码无需修改,可卸载现有版本后安装v5.x旧版:

npm uninstall express-handlebars
npm install express-handlebars@5.3.5 --save

安装完成后直接运行原有代码即可正常启动。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 04:36:06