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

运行Node.js Express项目时出现TypeError: hbs is not a function错误求助

解决TypeError: hbs is not a function错误

这个错误的核心原因是express-handlebars的导入和引擎注册方式不符合当前版本要求,以下是具体解决步骤:

1. 确认express-handlebars版本

在项目根目录执行命令查看当前版本:

npm list express-handlebars

2. 修改app.js中的引擎注册代码

如果版本是v4及以上(目前主流版本),旧写法会报错——因为新版本的express-handlebars导出的不是直接可调用的函数,而是包含create方法的对象。

错误写法示例(触发报错):

const hbs = require('express-handlebars');
app.engine('hbs', hbs()); // 此处hbs不是函数,抛出TypeError

正确写法:

方式一:解构create方法

const { create } = require('express-handlebars');
// 注册引擎并配置模板参数
app.engine('hbs', create({
  extname: '.hbs', // 指定模板文件后缀
  layoutsDir: './views/layouts', // 布局文件目录(按需配置)
  defaultLayout: 'main' // 默认布局文件(按需配置)
}).engine);
// 设置视图引擎
app.set('view engine', 'hbs');

方式二:直接调用create

const expressHandlebars = require('express-handlebars');
app.engine('hbs', expressHandlebars.create({ extname: '.hbs' }).engine);
app.set('view engine', 'hbs');

3. 排查依赖冲突

如果同时安装了hbs和express-handlebars两个包,会导致模块导入混淆,执行命令卸载多余的hbs包:

npm uninstall hbs

4. 重新启动服务

修改完成后,重启服务:

npm start

内容的提问来源于stack exchange,提问作者salahaKA

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 20:37:41