在微信小程序裏,與後臺服務器交互的主要接口函數是wx.request()
,用於發起 HTTPS 網絡請求。其重要性不言而喻。然而,卻常常遇到請求失敗的問題,筆者特地谷歌"wx.request 請求失敗",能夠搜索到不少相關的文章,下面列出一些:git
有些事開發時候遇到,有些是產品上線後遇到。線上的狀況比開發和測試的時候複雜的多,失敗的緣由可能各類各樣。既然測試沒法 100%保證上線不會出問題,咱們惟一要作的就是及時發現和快速響應。github
微信小程序運維中心提供了錯誤日誌記錄,但功能仍是比較有限。只有簡單的統計和錯誤展現功能,而每每僅僅靠報錯信息是沒法清晰理解錯誤成因的。這個時候使用強大的第三方監控服務就頗有必要了。編程
咱們使用一款由jectychen開發的wechat-v2ex來作演示,v2ex 數據 api 基本上使用了 samuel1112 的倉庫v2er裏封裝的方法。json
其運行效果以下:小程序
最左側原本應該有頭像的,可能因爲防盜鏈的緣由沒有顯示出來。segmentfault
有時候一個微信小程序可能會用到多個第三方服務,從多個域名獲取數據。如下兩種狀況都值得注意:微信小程序
所以產品上線之後,對接口的調用進行監控是頗有必要的。api
Fundebug 的微信小程序錯誤監控插件支持監控 HTTP 請求錯誤:服務器
httpTimeout
來監控。要使用 Fundebug 監控,你須要去Fundebug網站註冊帳號並建立一個微信小程序監控項目,而後按照提示接入插件。你須要下載微信小程序監控的 JS 腳本放入到本身的項目中,而後引入並經過fundebug.init()
函數做必要的配置。微信
var fundebug = require("./utils/fundebug.1.3.1.min.js"); fundebug.init({ apikey: "YOUR-API-KEY", monitorHttpData: true, httpTimeout: 2000, monitorMethodCall: true, monitorMethodArguments: true, setSystemInfo: true, setUserInfo: true, setLocation: true });
插件默認會監控 HTTP 請求錯誤,並上報 Header 部分的信息,咱們無需作配置。爲了方便 Debug,咱們配置monitorHttpData
來記錄 body 部分的信息;咱們將httpTimeout
設置爲 2000 毫秒,超過該時長的請求會被上報到服務器。
爲了演示wx.request
返回 request:fail 錯誤,我特地將utils/api.js
中的HOST_URI
改錯。
var HOST_URI = 'https://www.w2ex.com/api/';
而後保存運行。Fundebug 收到上報的錯誤,該請求花了 7072 毫秒,而後返回請求失敗。
經過用戶行爲能夠更加清楚地瞭解整個小程序的運行過程:
此次,我將獲取最新話題的接口作點更改,故意將latest
寫出lastest
:
var LATEST_TOPIC = 'topics/lastest.json';
保存運行,Fundebug 捕獲該錯誤並上報到服務器:
獲取某一個話題詳情的時候,應該傳入對應的 id。若是 id 是 null、undefined、或則原本是數字咱們傳入字符串,看看結果怎麼樣。
下圖可知當咱們將參數 id 設爲undefined
的狀況下,接口返回 404。並返回消息:
{ "message": "Object Not Found", "status": "error" }
Fundebug專一於JavaScript、微信小程序、微信小遊戲、支付寶小程序、React Native、Node.js和Java線上應用實時BUG監控。 自從2016年雙十一正式上線,Fundebug累計處理了10億+錯誤事件,付費客戶有陽光保險、核桃編程、荔枝FM、掌門1對一、微脈、青團社等衆多品牌企業。歡迎你們免費試用!
轉載時請註明做者 Fundebug以及本文地址:
https://blog.fundebug.com/2019/07/01/monitor-wx-request-fail/