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

Node.js使用module.exports导出模块报Route.get()回调错误如何解决

报错根因

你在user.controller.js中导出的是userController构造函数本身,而非函数执行后返回的控制器实例对象。路由文件导入后直接访问userController.getUser,相当于对函数本身取不存在的getUser属性,得到的就是undefined,不符合express路由要求传入回调函数的规则,因此触发报错。

修复方案

你可以任选以下任意一种方式修改:

  • 方案1:直接修改控制器文件的导出逻辑,导出实例化后的控制器对象
    调整user.controller.js末尾的导出代码即可,其他代码无需改动:

    // user.controller.js 仅修改导出行
    module.exports = userController()
    

    该方案适合不需要重复创建控制器实例的场景,也是大部分业务项目的常用写法。

  • 方案2:修改路由文件的导入逻辑,先执行构造函数拿到实例再调用方法
    调整user.routes.js的导入和使用逻辑:

    // user.routes.js
    const express = require('express')
    const router = express.Router()
    // 导入控制器构造函数
    const userControllerGenerator = require('../controllers/user.controller')
    // 执行构造函数拿到控制器实例
    const userController = userControllerGenerator()
    
    router.get('/info', userController.getUser)
    
    module.exports = router
    

    该方案适合需要多次创建不同控制器实例的场景。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 03:06:02