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

使用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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.01 21:05:18