摘要:微信小程序運維中心提供了錯誤日志記錄,但功能還是比較有限。有時候一個微信小程序可能會用到多個第三方服務(wù),從多個域名獲取數(shù)據(jù)。要使用監(jiān)控,你需要去網(wǎng)站注冊賬號并創(chuàng)建一個微信小程序監(jiān)控項目,然后按照提示接入插件。
在微信小程序里,與后臺服務(wù)器交互的主要接口函數(shù)是wx.request(),用于發(fā)起 HTTPS 網(wǎng)絡(luò)請求。其重要性不言而喻。然而,卻經(jīng)常遇到請求失敗的問題,筆者特意谷歌"wx.request 請求失敗",可以搜索到很多相關(guān)的文章,下面列出一些:
wx.request 失敗| 微信開放社區(qū)
微信小程序 wx.request 請求失敗- SegmentFault 思否
小程序部分機型小程序用戶無法發(fā)起 wx.request 請求,網(wǎng)絡(luò)錯誤問題 ...
wx.request()失敗,request:fail。_微信小程序開發(fā)
request:fail 合集(各種 request:fail 問題)
微信小程序之 wx.request:fail 錯誤排查- 簡書
有些事開發(fā)時候遇到,有些是產(chǎn)品上線后遇到。線上的情況比開發(fā)和測試的時候復(fù)雜的多,失敗的原因可能各種各樣。既然測試無法 100%保證上線不會出問題,我們唯一要做的就是及時發(fā)現(xiàn)和快速響應(yīng)。
微信小程序運維中心提供了錯誤日志記錄,但功能還是比較有限。只有簡單的統(tǒng)計和錯誤展示功能,而往往僅僅靠報錯信息是無法清晰理解錯誤成因的。這個時候使用強大的第三方監(jiān)控服務(wù)就很有必要了。
小程序 Demo我們使用一款由jectychen開發(fā)的wechat-v2ex來做演示,v2ex 數(shù)據(jù) api 基本上使用了 samuel1112 的倉庫v2er里封裝的方法。
其運行效果如下:
最左側(cè)本來應(yīng)該有頭像的,可能由于防盜鏈的原因沒有顯示出來。
有時候一個微信小程序可能會用到多個第三方服務(wù),從多個域名獲取數(shù)據(jù)。以下兩種情況都值得注意:
某些接口做了更新沒有及時推送通知,該接口的調(diào)用就會失敗;
服務(wù)不夠穩(wěn)定,接口的返回某一時段特別慢;
某些終端用戶的數(shù)據(jù)不符合導(dǎo)致接口失敗。
因此產(chǎn)品上線以后,對接口的調(diào)用進行監(jiān)控是很有必要的。
接入監(jiān)控Fundebug 的微信小程序錯誤監(jiān)控插件支持監(jiān)控 HTTP 請求錯誤:
當(dāng)請求返回的 statusCode 不是 2xx 或者 fail 回調(diào)函數(shù)被觸發(fā)的時候,F(xiàn)undebug 的小程序監(jiān)控插件會捕獲該錯誤并發(fā)送到服務(wù)器。
如果接口請求耗時過長,我們也可以配置httpTimeout來監(jiān)控。
要使用 Fundebug 監(jiān)控,你需要去Fundebug網(wǎng)站注冊賬號并創(chuàng)建一個微信小程序監(jiān)控項目,然后按照提示接入插件。你需要下載微信小程序監(jiān)控的 JS 腳本放入到自己的項目中,然后引入并通過fundebug.init()函數(shù)作必要的配置。
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 });
插件默認(rèn)會監(jiān)控 HTTP 請求錯誤,并上報 Header 部分的信息,我們無需做配置。為了方便 Debug,我們配置monitorHttpData來記錄 body 部分的信息;我們將httpTimeout設(shè)置為 2000 毫秒,超過該時長的請求會被上報到服務(wù)器。
Request:fail 錯誤為了演示wx.request返回 request:fail 錯誤,我特意將utils/api.js中的HOST_URI改錯。
var HOST_URI = "https://www.w2ex.com/api/";
然后保存運行。Fundebug 收到上報的錯誤,該請求花了 7072 毫秒,然后返回請求失敗。
通過用戶行為可以更加清楚地了解整個小程序的運行過程:
404 錯誤這次,我將獲取最新話題的接口做點更改,故意將latest寫出lastest:
var LATEST_TOPIC = "topics/lastest.json";
保存運行,F(xiàn)undebug 捕獲該錯誤并上報到服務(wù)器:
參數(shù)錯誤獲取某一個話題詳情的時候,應(yīng)該傳入對應(yīng)的 id。如果 id 是 null、undefined、或則本來是數(shù)字我們傳入字符串,看看結(jié)果怎么樣。
下圖可知當(dāng)我們將參數(shù) id 設(shè)為undefined的情況下,接口返回 404。并返回消息:
{ "message": "Object Not Found", "status": "error" }關(guān)于Fundebug
Fundebug專注于JavaScript、微信小程序、微信小游戲、支付寶小程序、React Native、Node.js和Java線上應(yīng)用實時BUG監(jiān)控。 自從2016年雙十一正式上線,F(xiàn)undebug累計處理了10億+錯誤事件,付費客戶有陽光保險、核桃編程、荔枝FM、掌門1對1、微脈、青團社等眾多品牌企業(yè)。歡迎大家免費試用!
版權(quán)聲明轉(zhuǎn)載時請注明作者 Fundebug以及本文地址:
https://blog.fundebug.com/2019/07/01/monitor-wx-request-fail/
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/105175.html
摘要:而且官方也給出了示例在回調(diào)函數(shù)中上報異常為了確保完全掌握小程序的運行狀況,我們將異常上報。的微信小程序插件除了可以自動捕獲異常外,還支持通過接口主動上報異常。 近日看到一篇文章99%的程序都沒有考慮的網(wǎng)絡(luò)異常,開篇提到: 絕大多數(shù)程序只考慮了接口正常工作的場景,而用戶在使用我們的產(chǎn)品時遇到的各類異常,全都丟在看似 ok 的 try catch 中。如果沒有做好異常的兼容和兜底處理,會極...
摘要:博客地址使用模塊化工具打包自己開發(fā)的庫文章中有提到,當(dāng)時需要寫一個,監(jiān)控小程序的后臺接口調(diào)用和頁面報錯,今天就來說下實現(xiàn)原理吧原理之前也做過瀏覽器端的數(shù)據(jù)埋點上報,其實原理大同小異通過劫持原始方法,獲取需要上報的數(shù)據(jù),最后再執(zhí)行原始方法,這 博客地址 《使用模塊化工具打包自己開發(fā)的JS庫》文章中有提到,當(dāng)時需要寫一個SDK,監(jiān)控小程序的后臺接口調(diào)用和頁面報錯,今天就來說下實現(xiàn)原理吧! ...
摘要:微信官方?jīng)]有給出來處理異步操作,而官方異步的又非常多,這使得多異步編程會層層回調(diào),代碼一復(fù)雜,回調(diào)起來就想砸電腦。是一個轉(zhuǎn)換微信小程序異步為的一個工具庫優(yōu)點避免小程序異步編程多次回調(diào)帶來的過多回調(diào)導(dǎo)致邏輯不清晰,篇幅過長等問題。 把微信小程序異步API轉(zhuǎn)化為Promise。用Promise處理異步操作有多方便,誰用誰知道。微信官方?jīng)]有給出Promise API來處理異步操作,而官方AP...
摘要:開始寫小程序的時候?qū)π〕绦蛘埱蠼涌诘南喈?dāng)無奈,因為項目急就沒考慮那么多,直接開干。 開始寫小程序的時候?qū)π〕绦蛘埱蠼涌诘膔equestAPI相當(dāng)無奈,因為項目急就沒考慮那么多,直接開干。后邊閑下來就考慮了一下做了一個封裝,來統(tǒng)一做一些數(shù)據(jù)處理,達(dá)到減輕開發(fā)重復(fù)性,優(yōu)化代碼的作用: 首先我封裝了一個類: import { base_url } from ../config/api // ...
閱讀 2857·2021-09-28 09:36
閱讀 3959·2021-09-22 15:52
閱讀 3642·2021-09-06 15:00
閱讀 1961·2021-09-02 15:40
閱讀 2808·2021-09-02 15:15
閱讀 3474·2021-08-17 10:15
閱讀 2790·2019-08-30 15:53
閱讀 2081·2019-08-29 18:39