繁体   English   中英

UnhandledPromiseRejectionWarning:错误:请求失败,状态码为 400

[英]UnhandledPromiseRejectionWarning: Error: Request failed with status code 400

我尝试通过使用 sdk 行来使用 node.js 构建 LINE 机器人,以获取 Covid-19 统计数据的最新信息。 不幸的是,异步 function 出现错误。 当我使用 LINE flex 消息时发生错误,但在短信上很好。

错误信息

UnhandledPromiseRejectionWarning: Error: Request failed with status code 400

参考

https://github.com/PhilipPurwoko/line-bot-webhook/blob/0d12dbceab880dd7ef42876ebff3a76d24d7bf4a/handler.js#L21

此回调假设返回 JSON 格式文件中的值,然后由回调使用并传递给res.json() 我不明白为什么会发生此错误,即使我在这里进行了回调https://github.com/PhilipPurwoko/line-bot-webhook/blob/0d12dbceab880dd7ef42876ebff3a76d24d7bf4a/controllers/webhook.js#L7

请有人帮忙。 我已经在这个问题上停留了几个小时。 我在论坛上阅读了很多帖子,但没有帮助。 在这篇文章中要添加的代码太多了。 您可以 go 通过此链接https://github.com/PhilipPurwoko/line-bot-webhook/issues .

我非常感谢您的所有回复。 谢谢

这里的问题是,默认情况下,如果您的响应状态为错误,Axios 会抛出异常(以 4 或 5 开头的状态被视为错误

由于您要获取的 URL 似乎不存在,因此远处的 API 抛出响应 404 错误,axios 认为它和错误。

因此,执行的代码在第 36 行的catch()中,而不是在handler.js中第 22 行的then()中的代码。由于异常被捕获,因此永远不会触发您的错误处理程序。

Axios 有一个可选参数可以将某个状态编号视为有效选项

在您的 axios 处理程序中,添加参数

{ 
validateStatus: function (status) {
    return status < 500; // Resolve only if the status code is less than 500
  }
}

axios.get在 url 之后,你应该对 go 很好。

即或展开错误处理以显示响应信息。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM