簡體   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