快速错误中间件发送响应

时间:2018-02-20 20:30:43

标签: javascript node.js express middleware

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

  

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

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

中调用next
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');

});

问题:

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

1 个答案:

答案 0 :(得分:2)

根据documentation on error handling,您必须指定错误处理中间件最后才能使其正常工作。

通过使用错误签名可能会让人感到困惑。