我将Axios用于我的VueJs应用程序,并且具有Express REST Api。当我的VueJs应用程序无法调用后端(连接被拒绝/节点服务器未运行)时
如何捕获此错误?我试图使用拦截器记录错误
instance.interceptors.response.use(res => res, (err) => {
console.log({ err });
if (err.response.status === 401) {
// unauthorized
}
return err;
});
但是登录err
时我只会得到
错误:网络错误
与response: undefined
我应该注销用户,因为他当时无能为力,还是应该显示错误警报并让他留下?
答案 0 :(得分:1)
尝试使用Axios捕获并处理连接拒绝错误
catch(error => {
if (!error.response) {
// network error
this.errorStatus = 'Error: Network Error';
} else {
this.errorStatus = error.response.data.message;
}
})
答案 1 :(得分:1)
尝试
axios.interceptors.response.use(
function(response) {
return response;
},
function(err) {
if (err.response.status === 401) {
// unauthorized
}
return Promise.reject(err);
}
);
答案 2 :(得分:0)
axios.interceptors.response.use(
function ( response ) {
// response data
return response;
},
function ( error ) {
let text = '';
if ( error.response.data ) {
text = 'error: ' +error.response.data.error.code + ' || ' + error.response.data.error.message;
} else if (error.message) {
// network down
text = error.message + ' || Server is Down ?';
} else {
// http status code and data
text = error.response.status + ' || ' + error.response.data;
}
console.log('axios error message: ',text)
if ( isNetworkError( error ) ) return alert( 'check your connection' );
throw error;
// return Promise.reject( error.message );
}); function isNetworkError ( err ) {
return !!err.isAxiosError && !err.response;}
我注意到服务器是否关闭或无法访问(例如404),但 error.response 不存在,但 error.message 。 我正在检查error.response(401等),而不是error.message(404或ERR_CONNECTION_REFUSED)错误...