web-dev-qa-db-ja.com

Axiosでnet :: ERR_CONNECTION_REFUSEDを処理する方法-Vue.js

以下は私の接続要求コードです:

_doLogin(this.login).then(response => {
        var token = response.data.token;
        localStorage.setItem('AUTH_TOKEN', JSON.stringify(token));
        this.$router.Push({name: 'Devices'});
        });
      }).catch(error => {
        console.log(error.response.data.message);
      });
_

catch()部分は、httpエラー(_400_、_404_、_403_ .. etcなど)に対して正常に機能します。しかし、サーバーがオフラインのとき、このスクリプトは_net::ERR_CONNECTION_REFUSED_をスローするだけです。このエラーを処理して、サーバーが現在オフラインであることをフロントエンドユーザーに知らせる方法はありますか?

doLogin()関数は、念のためです。

_function doLogin(data) {
  const url   = 'http://localhost:3000/authenticate';
  return axios.post(url,data);
}
_
11
Jithesh Kt

キャッチ部分でこれを試すことができます:

catch(error => {
        if (!error.response) {
            // network error
            this.errorStatus = 'Error: Network Error';
        } else {
            this.errorStatus = error.response.data.message;
        }
      })
9
chithra

@chithraが.then()で指摘したのと同じ検証を行う必要があります。サーバーを停止した状態でリクエストをテストするときに奇妙な問題が発生しているためです。

また、.then()response.status の代わりに response.error

0
Leo

PanJunjie潘俊杰 のように自分自身を確認するか、 sindresorhus/is-reachable のようなライブラリを使用できます。後者が私の好みのオプションです。

乾杯!

0
chrisg86

interceptorsを使用できます。

axios.interceptors.response.use(
    response => {
        return response
    },
    error => {
        if (!error.response) {
            console.log("Please check your internet connection.");
        }

        return Promise.reject(error)
    }
)
0
Sinan Eldem