以下は私の接続要求コードです:
_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);
}
_
キャッチ部分でこれを試すことができます:
catch(error => {
if (!error.response) {
// network error
this.errorStatus = 'Error: Network Error';
} else {
this.errorStatus = error.response.data.message;
}
})
@chithraが.then()
で指摘したのと同じ検証を行う必要があります。サーバーを停止した状態でリクエストをテストするときに奇妙な問題が発生しているためです。
また、.then()
でresponse.status
の代わりに response.error
PanJunjie潘俊杰 のように自分自身を確認するか、 sindresorhus/is-reachable のようなライブラリを使用できます。後者が私の好みのオプションです。
乾杯!
interceptorsを使用できます。
axios.interceptors.response.use(
response => {
return response
},
error => {
if (!error.response) {
console.log("Please check your internet connection.");
}
return Promise.reject(error)
}
)