Axios捕获错误时返回的是JavaScript错误,而不是服务器响应。

7 浏览
0 Comments

Axios捕获错误时返回的是JavaScript错误,而不是服务器响应。

我尝试从服务器捕获验证错误。

代码:

axios.post('https://myBackendIp.com/api/teacher/time/create',Data)
.then(res=>{
       console.log(res)
 }).catch(error=>{
       console.log(error)
 })

控制台日志输出

Error: 网络错误
at createError (createError.js:16)
at handleError (xhr.js:87)

网络标签输出

{"error":{"message":"检查您的日期字段","status_code":500}}

有办法改变这个吗,还是我做错了什么?

谢谢!

0
0 Comments

问题出现的原因是CORS问题,解决方法是使用console.log(error.response)替代console.log(error)

在使用Axios进行网络请求时,如果出现错误,通常会使用catch方法来捕获错误并进行处理。然而,在某些情况下,当捕获到错误时,返回的并不是服务器的响应,而是一个JavaScript错误。这个问题在一篇关于Axios的GitHub问题中被提到(https://github.com/axios/axios/issues/960)。这个问题的解决方法是使用console.log(error.response)来输出错误响应,而不是使用console.log(error)

进一步的阅读发现,这个问题可能是CORS问题的一个症状。在网络标签上看起来请求是成功的,但是当被Axios处理时,会返回一个Network Error。这个问题在Stack Overflow的两个问题中也有提到(https://stackoverflow.com/questions/53044553?rq=1https://stackoverflow.com/questions/45980173)。这些问题没有提供明确的解决方法。

当使用上述代码时,输出会显示"undefined"的消息。根据以上讨论,我们可以推断出这个问题是由CORS引起的。解决这个问题的方法是处理CORS配置,确保允许跨域请求。这样就可以正确地获取到服务器的响应了。

,当使用Axios进行网络请求时,如果出现错误返回了JavaScript错误而不是服务器响应,可能是因为CORS问题导致的。解决这个问题的方法是使用console.log(error.response)来输出错误响应,并确保CORS配置正确。这样就可以正确地获取到服务器的响应了。

0