在axios拦截器中返回错误后,可以通过检查res是否存在来解决未定义的问题。以下是一个示例代码:
axios.interceptors.response.use(
(response) => {
// 对响应数据做些处理
return response;
},
(error) => {
if (error.response) {
// 请求已发出,但服务器响应的状态码不在 2xx 范围内
console.log(error.response.data);
console.log(error.response.status);
console.log(error.response.headers);
} else if (error.request) {
// 请求已发出,但没有收到响应
console.log(error.request);
} else {
// 在设置请求时触发错误
console.log('Error', error.message);
}
console.log(error.config);
// 返回一个 Promise 对象,可以在调用处继续处理错误
return Promise.reject(error);
}
);
在上面的代码中,我们在axios.interceptors.response.use()方法的第二个参数中处理错误。在该方法中,我们可以通过error.response来访问服务器响应的数据,状态码和头部信息。如果error.response存在,则表示服务器已经响应了错误。如果error.response不存在,则表示请求已发出,但没有收到响应。如果error.response和error.request都不存在,则表示在设置请求时触发了错误。
最后,我们使用Promise.reject(error)将错误继续传递给调用处,以便在其他地方处理错误。