如果axios请求失败,则error.response未定义

时间:2018-11-13 15:07:28

标签: axios

如果我的Vue.js应用程序中的axios请求失败,我将无法访问错误(响应)状态代码。我无法弄清楚为什么在“ .catch”和“ axios.interceptors.response”中都未定义响应。我遵循了这个instruction,它演示了可以使用以下代码轻松访问“ error.response”:

axios.interceptors.response.use(
  (response) => { 
    console.log(response);
    return response;
  },  
  (error) => {
    handleApiFail(error.response);
  });

如果我将此代码添加到我的应用程序的“ main.js”中,则当请求失败时将调用“ handleApiFail”,但第二个lambda中未定义error.response,并且未调用第一个lambda。如果请求成功,则在第一个lambda中定义“响应”并具有状态代码。

EDIT1 this不可选项,因为我的OPTIONS请求不需要授权。此外,还有各种posts描述了相同的情况。

3 个答案:

答案 0 :(得分:0)

这是axios的特质。一个快速的解决方案是序列化响应:

JSON.stringify(error)

有关更多信息,请参阅此GitHub问题:https://github.com/axios/axios/issues/960

正如某人指出的那样,您可以检查操作中的错误状态代码,并根据它运行其他提交。

答案 1 :(得分:0)

缺乏

access-control-allow-origin: *
响应中的

标头导致浏览器阻止了我的请求。

添加标题可使axios正常工作。

答案 2 :(得分:0)

我有这样的代码:

axios.interceptors.response.use(null, (error) => {
    .........
    return Promise.reject();
});

然后,我发现我很想念我的诺言拒绝中的“错误”,请按以下步骤进行纠正:

return Promise.reject(error);