web-dev-qa-db-fra.com

Comment gérer net :: ERR_CONNECTION_REFUSED dans Axios - Vue.js

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);
}
5
Jithesh Kt

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;
        }
      })
6
chithra

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

0
Leo

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é!

0
chrisg86