传递错误表示支持中间件下一个功能吗?

时间:2017-01-20 14:08:07

标签: node.js express middleware

关于Express webisite Writing Middleware

的文章

下一个功能不带任何参数。我见过的大多数中间件都没有将任何参数传递给下一个函数,但我遇到了服务静态中间件,并且在他们的下一个函数的实现中,他们有时会将错误传递给next()

在编写自己的中间件时将错误传递给next()函数是否正确?这是Express框架默认需要/支持的东西吗?

2 个答案:

答案 0 :(得分:1)

是的,您可以通过路由和中间件中的next()发送错误。

你也可以像这样定义错误处理程序:

app.use(function (err, req, res, next) {
    // handle the error
}); 

请注意,错误处理程序不是通常的三个参数,而是采用包含错误的第四个参数。

有关详细信息,请查看此处:https://expressjs.com/en/guide/error-handling.html

答案 1 :(得分:0)

是的,这是引发错误的标准方法,同时仍允许链中的其他中间件执行。

您可以在express source code for route.js

中看到这一点
function next(err) {

    // ....

    if (err) {
      layer.handle_error(err, req, res, next);
    } 

    // ....
}