Express-handlebars报错handlebars is not a function问题求助
问题原因
你当前安装的是express-handlebars 6.x及以上版本,该版本做了破坏性的API变更,不再默认导出可直接调用的构造函数,因此直接执行handlebars()会抛出「不是函数」的类型错误。
修复方案
提供两种兼容新版API的修复方式,任选其一即可:
- 方案1:直接使用导出的
engine属性注册引擎
把引擎注册代码直接修改为:app.engine('handlebars', handlebars.engine); - 方案2:解构导入
engine方法后调用(适合需要自定义模板配置的场景)
首先修改导入语句:
再修改引擎注册代码,也可以在调用时传入自定义配置:const { engine } = require('express-handlebars');// 基础用法 app.engine('handlebars', engine()); // 带配置用法示例 // app.engine('handlebars', engine({ defaultLayout: 'main', extname: '.handlebars' }));
其他注意事项
你的代码还存在一处潜在报错点:导入path模块时声明的变量名为paths,但后续静态资源配置中调用的是path.join(__dirname, 'public'),变量名不匹配会触发未定义报错,建议把导入语句修改为:
const path = require('path');
内容的提问来源于stack exchange,提问作者slim.syd
相关产品推荐
相关产品推荐

