如果我的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中定义“响应”并具有状态代码。
答案 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);