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

Express.js中间件未被调用,排查函数或使用方式问题

Express.js中间件未被调用的问题解决

你的问题出在中间件函数的参数定义错误,导致它变成了错误处理中间件,而非普通中间件,所以正常请求不会触发它。

Express里的普通中间件参数顺序是(req, res, next),而第一个参数为err的是错误处理中间件——这类中间件只会在之前的路由/中间件调用next(err)传递错误时才会被触发,普通请求流程不会走到这里。

修正方法

把你的test中间件的参数顺序调整为普通中间件的结构:

const test = (req, res, next) => {
  console.log("middleware is working")
  next()
}

修改后,访问/home路由时,这个中间件会被正常调用,控制台会先输出middleware is working,再输出home。

如果你的本意是写错误处理中间件,那需要在前面的路由或中间件里主动传递错误,比如:

app.get('/home', (req,res, next) => {
  console.log('home')
  // 模拟错误,触发错误处理中间件
  next(new Error('test error'))
})

这时候你原本定义的错误处理中间件才会被调用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 19:55:22