配置handlebars模板后nodemon运行报handlebars is not a function如何解决
问题解决方法
该报错几乎均由express-handlebars版本迭代导致的引入、调用方式不匹配导致,可按以下步骤排查修复:
- 检查依赖引入语法
express-handlebarsv6及以上版本不再默认导出构造函数,旧版本的引入写法会直接触发类型错误:
错误写法(仅适配v5及更早版本):
const handlebars = require('express-handlebars')新版本正确写法,需从导出对象中解构出
engine方法:const { engine } = require('express-handlebars');
- 修正模板引擎注册代码
对应的引擎注册逻辑也要同步调整:
错误写法:
app.engine('hbs', handlebars({ extname: '.hbs' }))修正后写法:
app.engine('hbs', engine({ extname: '.hbs' }))
- 若要保留旧写法可降级依赖版本
不想调整现有代码的情况下,可执行命令安装v5分支的稳定版本:
npm install express-handlebars@5.3.5
安装完成后原有代码即可正常运行。
- 额外排查项
如果以上操作完成后仍然报错,执行npm ls express-handlebars检查依赖是否正常安装,确认没有误装其他名称相似的非官方handlebars包。
内容的提问来源于stack exchange,提问作者Marilia Soares
相关产品推荐
相关产品推荐

