当我在另一个使用一个axios请求时,我遇到了困难。特别是当response.data数组为空时。 每当response.data数组为空时,它都会给我这个错误: -
未捕获(承诺)TypeError:无法读取属性'data' 未定义
我知道很多人问过Uncaught而不是response.data 这是我的代码: -
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 :(得分:1)
错误来自原始问题中缺失的第this.some_variable= this.anothervari.reduce((a,b) => Number(a) > Number(b) ? a : b);
行。
在缩减为数组时,您需要为reduce函数指定一个起始值,因此请更改为:this.some_variable= this.anothervari.reduce((a,b) => Number(a) > Number(b) ? a : b, []);
答案 1 :(得分:0)
在返回任何响应之前,在请求设置期间可能发生错误,在这种情况下,响应对象未定义 https://github.com/axios/axios#handling-errors
答案 2 :(得分:-1)
如果axios没有收到服务器的响应,则错误对象没有响应对象。如果查看示例文档here,您可以看到在捕获错误时,它们会检查响应对象是否存在。在您的情况下,您的请求可能会失败而且从未到达服务器,因此您没有回复。在这种情况下,建议在访问之前查看响应对象是否存在,否则您将遇到异常。
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);
});