表达错误中间件发送响应



在我的express应用程序中,当到达错误中间件时,它仍然在res.json后执行第二个中间件功能。文档说:

下表中响应对象 (res) 上的方法可以向客户端发送响应,并终止请求-响应周期。如果未从路由处理程序调用这些方法,则客户端请求将保持挂起状态。

其中res.json是表中将终止请求-响应周期的方法之一。我也不会在我的快速错误中间件中调用下一个

router.use((err, req, res, next) => {
res.json({
success: false,
message: 'fail: email already exists'
});
});

//test still gets logged even though the express error middleware is executed
router.post('/', (req, res , next) => {
console.log('test');
});

问题:

为什么即使我不在错误中间件中调用 next 并执行res.json(),第二个express中间件仍然执行?

根据有关错误处理的文档,您必须最后指定错误处理中间件才能正常工作。

很可能是因为它带有错误签名,这正在变得混乱。

最新更新