从Express Server获取时出现错误对象

时间:2017-09-01 19:12:55

标签: javascript express error-handling server request

我有一个带有简单错误处理程序的Express服务器。传递给它的所有错误对象都是Error个对象。

const errorHandler = (err, req, res, next) => {
  logError(`Express Error Handler: ${err}`);
  res.status(500).json(err);
};

我使用request调用服务器的路由:

request
  .post(
    {
      uri: url,
      timeout,
      json: true,
      form: {
        currentStepUid,
        sourceStepUid: previousStepUid,
        config,
      },
    },
    (error, response, body) => {
      // Handle errors
    }
  )
});

我的问题是错误不是error个对象,而是error对象的body属性。

我应该如何设置Express才能恢复错误对象?

1 个答案:

答案 0 :(得分:2)

request.post()未将500状态报告为错误。联系了http服务器并提供了响应。这不是它认为的错误。您可以根据自己的代码从http响应中检测该条件,然后将其视为您自己代码中的错误。

您需要查看实际响应以查看http 500状态代码。错误对象是http响应主体,因此应该是它的位置。这就是你需要从中获取它的地方。

如果你必须在多个地方做同样的逻辑,你可以为request.post()创建自己的包装函数来检查http状态代码,如果它在你认为是错误的范围内,那么得到http响应正文并将其变为错误。