安装使用express-handlebars报TypeError: exphbs is not a function错误如何解决
错误产生原因
express-handlebars在v6.0.0及更高版本进行了破坏性API调整,不再默认导出可直接调用的构造函数,改为导出包含engine方法的对象,原有旧版本的调用方式和新版API不兼容,就会抛出exphbs is not a function的类型错误。
解决方法
有两种可选择的方案:
- 方案1:适配新版API,修改现有代码
修正后的完整代码如下:
var express = require('express'); // 从导出对象中解构出engine方法 var { engine } = require('express-handlebars'); var app = express(); // 调用engine方法完成模板引擎注册 app.engine('handlebars', engine({defaultLayout : 'main'})); app.set('view engine', 'handlebars'); app.get('/', function (req, res) { res.render('home'); }); app.listen(3000);
如果不想修改导入语句,也可以直接调用原有导入对象下的engine方法:
var exphbs = require('express-handlebars'); app.engine('handlebars', exphbs.engine({defaultLayout : 'main'}));
- 方案2:降级到兼容旧调用方式的版本
如果不想调整现有业务代码,可以卸载当前版本,安装v5.x的稳定版:
执行命令:
npm uninstall express-handlebars npm install express-handlebars@5.3.5
安装完成后原有代码无需修改即可正常运行。
内容的提问来源于stack exchange,提问作者jak
相关产品推荐
相关产品推荐

