使用express-handlebars时报错TypeError: exphbs is not a function如何解决
报错原因
该报错由express-handlebars版本兼容问题导致:你当前安装的是6.0及以上的高版本,该版本调整了模块导出规则,不再默认暴露可直接调用的引擎函数,原核心方法现在挂载在engine属性下。
解决方案
方案1:适配高版本语法(推荐)
调整代码写法,两种写法二选一即可:
- 解构导入
engine方法:
const { engine } = require('express-handlebars'); app.engine('.hbs', engine({ extname: '.hbs', defaultLayout: "main"})); app.set('view engine', '.hbs');
- 保留原有变量名,调用
engine属性:
var exphbs = require('express-handlebars'); app.engine('.hbs', exphbs.engine({ extname: '.hbs', defaultLayout: "main"})); app.set('view engine', '.hbs');
方案2:降级到兼容旧语法的版本
如果不想修改现有代码,可以卸载当前版本后安装v5.x稳定版:
npm uninstall express-handlebars npm install express-handlebars@5.3.5
降级完成后原有代码可以直接正常运行。
内容的提问来源于stack exchange,提问作者Adidi24
相关产品推荐
相关产品推荐

