Ci-dessous mon code de demande de connexion:
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);
});
la partie catch()
fonctionne correctement pour les erreurs http (telles que 400
, 404
, 403
.. etc). Mais lorsque mon serveur est hors ligne, ce script lance simplement net::ERR_CONNECTION_REFUSED
. Existe-t-il un moyen de gérer cette erreur et d'indiquer à l'utilisateur frontal que le serveur est actuellement hors ligne?
Voici la fonction doLogin
() au cas où,
function doLogin(data) {
const url = 'http://localhost:3000/authenticate';
return axios.post(url,data);
}
Vous pouvez essayer ceci dans la partie catch:
catch(error => {
if (!error.response) {
// network error
this.errorStatus = 'Error: Network Error';
} else {
this.errorStatus = error.response.data.message;
}
})
Vous devez effectuer la même validation que celle indiquée par @chithra dans la .then()
, car je rencontre un problème étrange lorsque je teste des demandes avec mes serveurs, la "réponse" est comme si elle réussissait.
En outre, sur la .then()
faites-le avec response.status
au lieu de response.error
Vous pouvez vous vérifier comme PanJunjie 潘俊杰 suggéré, ou utiliser une bibliothèque telle que sindresorhus/is-accessible . Ce dernier serait mon option préférée.
À votre santé!