关于Express webisite Writing Middleware
的文章下一个功能不带任何参数。我见过的大多数中间件都没有将任何参数传递给下一个函数,但我遇到了服务静态中间件,并且在他们的下一个函数的实现中,他们有时会将错误传递给next()
在编写自己的中间件时将错误传递给next()函数是否正确?这是Express框架默认需要/支持的东西吗?
答案 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);
}
// ....
}