错误.响应是未定义的,如果axios请求失败

rkue9o1l  于 5个月前  发布在  iOS
关注(0)|答案(4)|浏览(64)

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

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

字符串
如果我将此代码添加到我的应用程序中的'main.js'中,当请求失败时会调用'Error ApiFail',但第二个lambda中未定义error.response,并且不会调用第一个lambda。如果请求成功,则第一个lambda中的'response'被定义并具有状态代码。

编辑1this不是一个选项,因为我的OPTIONS请求不需要授权。还有各种posts描述相同的情况。

w8rqjzmb

w8rqjzmb1#

我有这样的代码:

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

字符串
于是,我发现我错过了返回我的“错误”的承诺拒绝,正确的是这样的:

return Promise.reject(error);

nx7onnlm

nx7onnlm2#

缺乏

access-control-allow-origin: *

字符串
响应中的头导致浏览器阻止了我的请求。
添加header使axios工作正常。

6jygbczu

6jygbczu3#

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

JSON.stringify(error)

字符串
请参阅此GitHub问题以获取更多信息:https://github.com/axios/axios/issues/960
正如有人指出的那样,你可以检查动作中的错误状态代码,并根据它运行其他的提交。

xggvc2p6

xggvc2p64#

以下是在某些情况下可能有所帮助的操作:

error = JSON.parse(JSON.stringify(error))

字符串
然后尝试读取error.propertyNameserror["propertyNames"]
谢谢

相关问题