【发布时间】:2016-11-19 13:00:07
【问题描述】:
我目前正在努力研究 ExpressJS 路由中错误处理的最佳实践,尤其是 POST 路由。
我已经设置了默认的中间件错误处理,我使用return next(err); 以防出现任何错误。这适用于 GET 路由中的所有错误。
但是,处理其他路由类型(尤其是 POST 路由)中的错误的最佳做法是什么?
在前端,我正在使用 AngularJS,我正在使用 $http 发布。在 POST 路由中使用 return next(err); 时,会调用 $http 的 .error(function(data,status,headers,config) (AngularJS),我会在数据变量中收到整个 html 错误页面。
我正在寻找的是通过 ExpressJS 中间件将用户重定向到一般错误页面,以防客户端不应处理此错误。这样,我还可以在一个地方进行错误处理和日志记录。
所以,我目前的想法:在 POST 路由中,只需执行 return res.status(500).send({err: err}); 以防应用程序无法恢复,然后在客户端使用 AngularJS 重定向到一般错误页面。但是,我更喜欢使用 ExpressJS 中间件来集中处理错误。
感谢您对最佳实践文章的任何帮助或指点!
作为参考,(标准)错误中间件函数如下所示:
app.use(function(err, req, res, next) {
res.status(err.status || 500);
res.render('shared/error/error', {
message: err.message,
error: err
});
});
【问题讨论】: