Axios捕获错误时返回的是JavaScript错误,而不是服务器响应。
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}}
有办法改变这个吗,还是我做错了什么?
谢谢!
问题出现的原因是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=1和https://stackoverflow.com/questions/45980173)。这些问题没有提供明确的解决方法。
当使用上述代码时,输出会显示"undefined"
的消息。根据以上讨论,我们可以推断出这个问题是由CORS引起的。解决这个问题的方法是处理CORS配置,确保允许跨域请求。这样就可以正确地获取到服务器的响应了。
,当使用Axios进行网络请求时,如果出现错误返回了JavaScript错误而不是服务器响应,可能是因为CORS问题导致的。解决这个问题的方法是使用console.log(error.response)
来输出错误响应,并确保CORS配置正确。这样就可以正确地获取到服务器的响应了。