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

Express拆分路由运行报Router.use require a middleware but got undefined错误

错误原因
  • 导出的路由对象不符合Express中间件要求:routers.js中你错误将router.get()方法的调用结果赋值给users变量导出,app.use()接收的第二个参数需要是中间件函数或者Router实例,你当前导出的users不符合传入要求,因此触发类型错误。
  • 路由路径重复配置:你在app.js中已经通过app.use("/users", xxx)给该组路由统一添加了/users前缀,若Router内部的接口路径仍写为/users,最终完整访问路径会变为/users/users,不符合常规开发预期。
修复方案

第一步:修改routers.js代码

const express = require("express");
const router = express.Router();

// 外层已配置/users前缀,此处路径写/即可,最终访问路径为 /users
router.get("/", (req, res) => {
    console.log("Route Created");
    // 必须返回响应,否则请求会一直挂起
    res.send("Users Page");
})

// 直接导出完整的Router实例作为中间件
module.exports = router;

第二步:修改app.js代码

const express = require("express");
// 引入路由文件导出的Router实例
const usersRouter = require("./routers/routers");

const app = express();
const PORT = 3000;

app.get("/", (req, res)=>{
    res.send("Home Page");
})

// 传入合法的Router实例作为中间件
app.use("/users", usersRouter);

app.listen(PORT, ()=>{
    console.log("Server Started");
})

修复完成后重启服务,访问http://localhost:3000/users即可正常获取响应,报错问题解决。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 01:15:04