如何使用 axios 显示响应错误消息

Posted

技术标签:

【中文标题】如何使用 axios 显示响应错误消息【英文标题】:How to display response error message with axios 【发布时间】:2017-11-07 05:25:55 【问题描述】:

现在几个月来一直希望实现这一目标,但现在需要它。我需要显示错误消息,设置在服务器上,关于出了什么问题:

服务器端点

abort(406, 'Foo bar!')

网页:

[...]
 .catch(e => 
  console.log(e.response.data) // does not work
 )

在 chrome 开发工具中,在预览下,我看到了消息 Foo bar!。如何在我的控制台日志中获取此消息?

此端点将根据操作有不同的abort 消息,因此我不想在网络上为错误设置静态错误消息。

Chrome 开发工具消息:

【问题讨论】:

How can I get the status code from an http error in Axios?的可能重复 【参考方案1】:

这应该可以工作:console.log(e.response.data.message)。我想这就是你要找的。​​p>

这是针对这种类型的请求:

axios.post(
    url,
    ,
    )
    .then(function (response) 
      console.log(response);
    )
    .catch(function (error) 
      console.log(error.response.data.message);
    );

【讨论】:

没有返回我设置的消息:Foo bar! 你用 e.message 试过了吗? 我收到了Request failed with status code 406。如果这有所不同,我会使用 Laravel。但 Chrome 开发工具显示实际消息 Foo bar! 让我们continue this discussion in chat。 第 4 行缺少“”【参考方案2】:

我遇到过这个问题。我创建了一个axios实例,responseType是'json', axios.create( ... responseType: 'json' )

response type 不是json,所以看不懂。去掉这个属性可以解决这个问题

【讨论】:

你能详细说明一下为什么去掉responseType可以解决这个问题吗? 服务器返回的response content-type不是json,是'arraybuffer', 'blob', 'document', 或者其他,我设置的是json,所以取不到其他类型

以上是关于如何使用 axios 显示响应错误消息的主要内容,如果未能解决你的问题,请参考以下文章

使用 Axios 从 laravel 控制器捕获错误

使用 axios 从 404 响应中捕获错误消息或在 javascript 中获取

如何将响应数据包含到 axios 响应中?

如何根据 React js 中 api 的响应显示成功或错误消息

JS Axios - 如何在发生错误时获取响应正文?

如何在 React 中查看 axios 错误响应 JSON