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
相关产品推荐
相关产品推荐

