我在 axios 补丁 api 中收到“Uncaught (in promise) TypeError: Cannot read property 'data' of undefined”错误

时间:2021-03-02 22:20:55

标签: javascript node.js mongodb express axios

我正在尝试使用 Axios/Node.js API 更新对象数组。我已经成功创建了数组,但是当我尝试通过 axios 补丁请求传入时,我收到“无法读取未定义的属性‘数据’”。有人知道我可能做错了什么吗?

我的 axios 函数如下:

export const updateTrans = async (transArr) => {
try {      
const res = await axios({
  method: 'PATCH',
  url: `http://127.0.0.1:7000/api/v1/property/${id}`,
  data: { 
      "transactions": transArr  }
});
  
if (res.data.status === 'success') {
  showAlert('success', 'Data updated successfully!');

}
 } catch (err) {
console.log(err.response.data.message );

showAlert('error', err.response.data.message);
}
};

我也尝试将“transArr”字符串化,但仍然没有运气。

1 个答案:

答案 0 :(得分:0)

问题是您在访问 err.response.data 时没有检查 err.response 是否存在。 err.response 仅存在于 if the request was made and there was a response。例如,如果发生 CORS 错误或某些网络错误(或 try 块内的某些其他错误),则不会出现该错误。

在使用前检查 err.response 是否存在。

try {
  // ...
} catch (err) {
  console.log(err, err.response && err.response.data);

  if (err.response && err.response.data) {
    // The request was made and the server responded with a status code
    // that falls out of the range of 2xx
    showAlert("error", err.response.data.message);
    return;
  }

  showAlert("error", err.message);
}