axios 无法访问错误消息
axios cannot access message of an error
我有一个使用 axios get 方法的函数,在承诺返回时我添加了错误处理来处理我尝试连接的服务已被禁用的情况。
axios.get('/someurl')
.then(() => {
// this does not matter
})
.catch((err) => {
logger.error(TAG, 'postCreateVm', err);
return reply(Boom.forbidden(err.message));
});
当我使用 curl 时,我可以看到消息,响应状态为 403:
# curl -X GET localhost:3000/someurl
{
"message": "abort"
}
问题是,当我尝试访问 'message' 属性 时,我什么也没得到,但我知道它就在那里! (我也尝试过使用 err.response.data 也没有成功)
根据文档,我应该可以访问它:axios handling errors
访问此消息的正确方法是什么?
我查看了他的代码,错误似乎是正确的响应,但在 axios 中,settle.js 用通用响应掩盖了它。您可以通过将 catch 块中的错误对象记录为字符串化 JSON:
来查看服务器响应
console.log('caught:::', JSON.stringify(response, null, 2))
所以在我的例子中,我通过访问返回的错误来修复它:
error.response.data.message
我的 catch 函数收到响应 属性 而不是错误对象。因此,要访问我使用的消息:
err.data.message
我有一个使用 axios get 方法的函数,在承诺返回时我添加了错误处理来处理我尝试连接的服务已被禁用的情况。
axios.get('/someurl')
.then(() => {
// this does not matter
})
.catch((err) => {
logger.error(TAG, 'postCreateVm', err);
return reply(Boom.forbidden(err.message));
});
当我使用 curl 时,我可以看到消息,响应状态为 403:
# curl -X GET localhost:3000/someurl
{
"message": "abort"
}
问题是,当我尝试访问 'message' 属性 时,我什么也没得到,但我知道它就在那里! (我也尝试过使用 err.response.data 也没有成功)
根据文档,我应该可以访问它:axios handling errors
访问此消息的正确方法是什么?
我查看了他的代码,错误似乎是正确的响应,但在 axios 中,settle.js 用通用响应掩盖了它。您可以通过将 catch 块中的错误对象记录为字符串化 JSON:
来查看服务器响应console.log('caught:::', JSON.stringify(response, null, 2))
所以在我的例子中,我通过访问返回的错误来修复它:
error.response.data.message
我的 catch 函数收到响应 属性 而不是错误对象。因此,要访问我使用的消息:
err.data.message