Express报错:Router.use()需传入中间件函数却得到Object
问题原因与解决步骤
这个错误的核心是:你导入的路由文件(./routes/auth或./routes/notes)没有返回一个Express能识别的中间件(也就是Router实例),反而返回了一个普通对象。
解决步骤:
- 打开你的
routes/auth.js和routes/notes.js文件,检查文件结构是否符合下面的规范:
// 1. 导入express并创建Router实例 const express = require('express'); const router = express.Router(); // 2. 在这里写你的路由逻辑(示例) router.get('/', (req, res) => { res.send('测试路由是否正常'); }); // 3. 必须导出router对象,这是最关键的一步! module.exports = router;
重点检查是否写了
module.exports = router:- 新手最容易犯的错误就是忘记导出router,导致
require('./routes/auth')拿到的是一个空对象,Express自然会报错说“需要中间件函数但得到了对象”。 - 如果已经写了导出,检查是不是导出了别的东西(比如自定义的普通对象),必须导出
router这个实例。
- 新手最容易犯的错误就是忘记导出router,导致
保存路由文件后,重启你的Node服务,错误应该就能解决。
内容的提问来源于stack exchange,提问作者Afeef Raza
相关产品推荐
相关产品推荐

