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

Node.js Express报错Router.use()需要中间件函数但得到undefined如何解决

错误原因

这个报错是因为Router.use()或app.use()接收的第二个参数不是合法的中间件/路由函数,而是undefined。

排查&解决步骤

  • 核对路由文件路径与文件名拼写
    你在index.js中引入用户路由的路径是./routes/user-router,但你给出的用户路由文件名是user.js,二者不匹配的情况下,引入得到的userRoutes是空对象,取userRoutes.routes就是undefined,传入app.use就会触发报错。
    需要核对所有引入的路由文件(roles-router.js、login-router等)的实际文件名、路径是否和引入语句完全一致,区分大小写。
  • 修正控制器方法拼写错误
    你在user.js路由中写的UserC.crreateUsers存在拼写错误,多了一个r,正确应为UserC.createUsers。如果你的userControllers.js中导出的方法名是createUsers,那么此处传入路由的处理函数就是undefined,也会触发报错。
    同时需要确认userControllers.js中确实导出了getUsers、createUsers、getUser三个方法,导出格式匹配你的引入方式:如果控制器是普通导出module.exports = { getUsers, createUsers, getUser },当前引入const UserC = require('../controllers/userControllers.js')就是正确的。
  • 核对所有路由文件的导出结构
    你当前的user.js路由导出格式是module.exports = { routes: router },需要确认其他所有路由文件(roles-router、login-router等)的导出格式完全一致,不要出现部分路由直接导出router的情况,否则取.routes就会得到undefined。
  • 检查app.js中的默认路由
    你在app.js中引入了app.use(require('./routes/index')),需要确认./routes/index文件导出的是合法的路由实例/中间件,没有导出undefined。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 10:24:04