使用Axios捕获并处理连接拒绝错误

时间:2019-04-10 06:41:16

标签: javascript vue.js axios

我将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

我应该注销用户,因为他当时无能为力,还是应该显示错误警报并让他留下?

3 个答案:

答案 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)错误...