在我的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
中间件仍然执行?
根据有关错误处理的文档,您必须最后指定错误处理中间件才能正常工作。
很可能是因为它带有错误签名,这正在变得混乱。