axios封装后获取不到error.response
时间: 2024-01-17 22:03:15 浏览: 182
可能的原因是服务器返回的响应状态码不在 2xx 范围内,导致 axios 认为该请求失败,从而抛出异常。这时需要在封装后的 axios 实例中添加一个响应拦截器来捕获异常并处理错误信息,例如:
```javascript
import axios from 'axios';
const instance = axios.create({
baseURL: 'https://api.example.com',
});
instance.interceptors.response.use(
response => 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);
throw error;
}
);
export default instance;
```
在响应拦截器中,如果 `error.response` 存在,则说明服务器已经返回了响应,但状态码不在 2xx 范围内,此时可以通过 `error.response.data` 来获取服务器返回的错误信息。如果 `error.request` 存在,则说明请求已经发送,但没有收到响应,此时可以通过 `error.request` 来查看请求的详细信息。如果以上两个属性都不存在,则说明在设置请求时发生了一些事情,例如网络错误,此时可以通过 `error.message` 来查看错误信息。
阅读全文