首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何获取与错误响应相关的数据?

如何获取与错误响应相关的数据?
EN

Stack Overflow用户
提问于 2019-05-31 02:46:03
回答 1查看 600关注 0票数 0

我正在从前端向后端中的一个路由发出请求,该路由正在验证与用户关联的令牌,如果令牌过期,该路由将向前端发送一个错误响应。我发送了一些json,但是在对catch块中的错误消息执行console.log时,未显示与错误响应一起发送的json。

像这样发送错误响应

代码语言:javascript
复制
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) )

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-05-31 02:59:09

在对错误执行console.log时,只显示错误的堆栈跟踪,而不显示与其关联的数据。可以获得随其一起发送的数据,这取决于请求是如何发出的,或者是由什么库发出的。如果请求是由axios发出的,则可以执行以下操作:

代码语言:javascript
复制
axios.post('/formulas/create', {
    name: "",
    parts: ""
})
.then(response => { 
    console.log(response)
})
.catch(error => {
    console.log(error.response.data.message)
});

在这里,在axios中,错误的细节将被包装在error.response中。但是,如果请求是由fetch接口发出的,则以下内容可以解决问题:

代码语言:javascript
复制
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找到

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56383962

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档