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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 13:24:04