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

Node.js新手求助:解决Router.use()需中间件函数却得到对象的错误

解决Router.use() requires a middleware function but got a Object错误

嘿,这个问题我刚学Node.js的时候也踩过一模一样的坑!根源特别明显——你在product.js里创建了Express Router实例,但没把它导出,导致主文件里require('./api/routes/product')拿到的是个空对象,Express自然就报错说你传了个对象而非中间件函数。

修复步骤:

打开你的api/routes/product.js,在文件最后加上一行导出代码:

module.exports = router;

修改后的完整product.js代码如下:

const express = require('express');
const router = express.Router();
router.get('/', (req, res, next) => {
  res.status(200).json({message: "Here we are handling the get request for the products"});
});

// 新增这行,把路由实例导出给主文件使用
module.exports = router;

为什么这样能解决?

Node.js模块默认会导出一个空对象{},当你没有显式导出任何内容时,主文件require进来的就是这个空对象。而Express的app.use()需要的是一个中间件函数(Router实例本质上就是一个符合要求的中间件函数),所以只要把Router实例导出,主文件就能正确拿到可用的中间件,错误就消失啦。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 08:20:41