我正在从前端向后端中的一个路由发出请求,该路由正在验证与用户关联的令牌,如果令牌过期,该路由将向前端发送一个错误响应。我发送了一些json
,但是在对catch块中的错误消息执行console.log
时,未显示与错误响应一起发送的json。
像这样发送错误响应
res.status(401).json({
message: 'User session has expired'
})
但是我在前端的catch块中得到的响应并没有显示与错误一起发送的json。
POST http://localhost:3001/check-validation 401 (未授权)错误:请求失败,状态代码为401 ( createError (createError.js:17) at settle (settle.js:19) at XMLHttpRequest.handleLoad (xhr.js:78) )
发布于 2019-05-31 02:59:09
在对错误执行console.log时,只显示错误的堆栈跟踪,而不显示与其关联的数据。可以获得随其一起发送的数据,这取决于请求是如何发出的,或者是由什么库发出的。如果请求是由axios
发出的,则可以执行以下操作:
axios.post('/formulas/create', {
name: "",
parts: ""
})
.then(response => {
console.log(response)
})
.catch(error => {
console.log(error.response.data.message)
});
在这里,在axios中,错误的细节将被包装在error.response
中。但是,如果请求是由fetch
接口发出的,则以下内容可以解决问题:
fetch('/401').then(function(response) {
if (response.status === 401) {
return response.json()
}
}).then(function(object) {
console.log(object.message)
})
附注:关于这个问题我搜索了很多,但没有得到答案,也没有任何关于它的文章或文档,即使是关于错误处理的官方Express文档也没有帮助。最后,我了解到问题出在用于发出请求的库上。这就是为什么回答我自己的问题来标记这个问题的存在。详细讨论可在此处related to axios和此处related to fetch api找到
https://stackoverflow.com/questions/56383962
复制相似问题