error.response 在 catch axios 中未定义

error.response is undefined in catch axios

我的问题是 error.response - 未定义。 发生这种情况是因为我有一个拦截器:

instance.interceptors.response.use(undefined, error => {
  if (error.response.status === 401) {
    console.log("UNAUTHORIZED");
  }
});

如果我删除拦截器,一切都会正常。 这就是我想要从错误中获得响应的方式:

const fn = async stuff => {
  try {
    const res = await API.get('bla-bla-bla')
  } catch (e) {
    console.log(e.response) <------------------------- undefined
    if (e.response && e.response.status === 401) {
      console.log("UNAUTHORIZED");
    }
  }
}

在您的拦截器中,您必须 return 带有 Promise.reject 的错误对象以便稍后可用:

instance.interceptors.response.use(undefined, error => {
  if (error.response.status === 401) {
    console.log("UNAUTHORIZED");
  }
  return Promise.reject(error);
});