在Node.js中,无法直接获取自定义错误的原因是因为Axios和Fetch返回的错误对象不包含自定义错误信息。为了解决这个问题,我们可以通过以下两种方法之一来处理自定义错误:
const axios = require('axios');
axios.interceptors.response.use(
response => response,
error => {
if (error.response && error.response.data && error.response.data.message) {
// 处理自定义错误
console.log(error.response.data.message);
} else {
// 处理其他错误
console.log('请求出错');
}
return Promise.reject(error);
}
);
axios.get('https://example.com/api')
.then(response => {
console.log(response.data);
})
.catch(error => {
console.error(error);
});
fetch('https://example.com/api')
.then(response => {
if (!response.ok) {
throw new Error('请求出错');
}
return response.json();
})
.then(data => {
console.log(data);
})
.catch(error => {
console.error(error.message);
});
在这两种方法中,我们可以通过判断response对象中是否存在自定义错误信息来处理自定义错误。如果存在自定义错误信息,我们可以根据需要进行处理,否则可以处理其他类型的错误。