使用Sequelize与Express时遭遇'app.use() requires a middleware function'错误求助
问题原因与解决方法
错误根源
报错app.use() requires a middleware function的原因不是req.params.id,而是你的routes.js文件导出方式错误:你导出的是一个包含routes属性的对象,而app.use()需要直接传入Express的Router实例。
修正步骤
修改routes.js的导出语句,将包装对象改为直接导出Router实例:
import express from "express" import aparelhos from "./controllers/aparelho.js" const routes = express.Router() routes.get("/aparelhos", aparelhos.findAll) routes.get("/aparelhos/:id", aparelhos.findAparelho) // 直接导出Router实例,而非包含它的对象 export default routes
原理说明
- Express的
app.use()方法接收的参数必须是符合中间件接口的函数(或Router实例,因为Router本身就是一个中间件函数)。 - 你之前导出的
{ routes }是普通对象,不符合中间件要求,因此触发报错。 - 你的
findAparelho函数本身没有问题,req.params.id是正确获取URL路径参数的方式,和本次报错无关。
内容的提问来源于stack exchange,提问作者Raphael Santos
相关产品推荐
相关产品推荐

