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

Express路由挂载报错:Router.use()需中间件函数却得到对象

解决Express路由挂载时的TypeError: Router.use() requires a middleware function but got a Object错误

问题原因

你遇到的错误核心是:home.js中创建的是完整的Express应用实例(const app = express()),而非Express Router实例。app.use()方法仅接受中间件函数或Router对象作为参数,直接传入完整的app实例会导致类型不匹配,触发该错误。

修复方案

修改home.js代码,将创建完整Express应用改为创建Router实例,并导出该Router:

const express = require("express");
// 替换为Router实例,而非独立的app
const router = express.Router();

router.get('/home', function(req,res){
    res.send("This is my Home page using Express Router");
});

// 导出Router对象,供主app挂载
module.exports = router;

原理说明

Express的路由挂载机制要求:

  • 主应用app通过use()方法挂载子路由时,子路由必须是express.Router()创建的路由对象,或者符合(req, res, next)格式的中间件函数。
  • 独立的Express app实例拥有自己的路由、中间件栈,无法直接作为子路由挂载到另一个app上,这就是报错的根本原因。

修改完成后重启服务,访问http://localhost:3000/home即可正常返回页面内容,/router路径下的各HTTP方法请求也能正常响应。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 08:08:12