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

Express项目调用signin.handleSignin报is not a function错误如何解决

问题原因
  • 导出导入逻辑不匹配:signin.js使用export default默认导出handleSignin函数,因此server.js中导入的signin本身就是目标函数,不是包含handleSignin属性的对象,调用signin.handleSignin()自然会触发类型错误。
  • 路由重复定义:server.js中先后声明了两次POST /signin路由,即使修复调用错误,后定义的内联路由也会覆盖控制器路由,属于冗余冲突代码。
解决方法

你可以任选以下任意一种方案修复:

方案1:保留默认导出,修改调用逻辑

直接修改server.js中的路由声明,将原代码:

app.post('/signin', signin.handleSignin(db, bcrypt))

替换为:

app.post('/signin', signin(db, bcrypt))

之后删除server.js中后续重复定义的内联app.post("/signin", (req, resp) => { ... })代码块即可。

方案2:改为命名导出适配原调用逻辑

如果后续signin.js需要导出多个方法,可以修改导出导入逻辑:

  1. 把signin.js末尾的export default handleSignin;替换为:
export { handleSignin }
  1. 修改server.js中的导入语句为:
import { handleSignin } from "./controllers/signin.js"
  1. 修改路由声明为:
app.post('/signin', handleSignin(db, bcrypt))

同样删除后续重复的/signin路由代码即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.23 14:15:04