Je rencontre des difficultés lorsque j'utilise une requête axios dans une autre. Surtout lorsque le tableau response.data est vide. Chaque fois que le tableau response.data est vide, il me donne cette erreur: -

TypeError non capturé (en promesse): Impossible de lire la propriété 'data' de undefined

Je sais que beaucoup de gens ont demandé à Uncaught mais pas avec response.data Voici mon code: -

axios.get(URL+'/xyz?variable='+variablevalue, headerconfig)
    .then(response => {
     this.tempvariable= (response.data);
    axios.get(URL+'/abc?variable='+variablevalue,headerconfig)
        .then((response) => {
          this.tempvariable = (response.data);
          //inside for loop by using this.tempvariable
          this.some_variable= this.anothervari.reduce((a,b) => Number(a) > Number(b) ? a : b);
        })
        .catch(e => {
            alert(e.response.data);
        })       

    })
    .catch(e => {
        alert(e.response.data);
    }) 
0
JustStartedProgramming 11 avril 2018 à 12:08

3 réponses

Meilleure réponse

L'erreur vient de la ligne this.some_variable= this.anothervari.reduce((a,b) => Number(a) > Number(b) ? a : b); qui manquait dans la question d'origine.

Vous devez donner à la fonction de réduction une valeur de départ lors de la réduction à un tableau, donc changez ceci: this.some_variable= this.anothervari.reduce((a,b) => Number(a) > Number(b) ? a : b, []);

1
gillyhl 11 avril 2018 à 09:28

Si axios ne reçoit aucune réponse du serveur, l'objet d'erreur n'a pas d'objet de réponse. Si vous consultez l'exemple de documentation ici, vous pouvez voir qu'en détectant l'erreur, ils vérifient si l'objet de réponse existe ou non. Dans votre cas, votre demande échoue probablement sans jamais atteindre le serveur, vous n'avez donc pas de réponse. Dans des cas comme celui-ci, il est recommandé de voir si l'objet de réponse existe avant d'y accéder, sinon vous aurez une exception.

    axios.get('/user/12345')
    .catch(function (error) {
    if (error.response) {
      // The request was made and the server responded with a status code
      // that falls out of the range of 2xx
      console.log(error.response.data);
      console.log(error.response.status);
      console.log(error.response.headers);
    } else if (error.request) {
      // The request was made but no response was received
      // `error.request` is an instance of XMLHttpRequest in the browser and an instance of
      // http.ClientRequest in node.js
      console.log(error.request);
    } else {
      // Something happened in setting up the request that triggered an Error
      console.log('Error', error.message);
    }
    console.log(error.config);
  });
-1
Lassi Uosukainen 11 avril 2018 à 09:16

L'erreur aurait pu se produire pendant la configuration de la demande avant qu'une réponse ne soit retournée, auquel cas l'objet de réponse n'est pas défini https://github.com/axios/axios#handling-errors

0
Phil C 11 avril 2018 à 09:28