用Fundebug插件記錄網(wǎng)絡(luò)請(qǐng)求異常的方法
在服務(wù)端,不管我們使用Node.js、Java、PHP還是Python等等,都會(huì)用日志以文本的形式記錄請(qǐng)求以及報(bào)錯(cuò)信息。這個(gè)對(duì)于后端做事后分析是很有用的。
另一方面,前端有時(shí)候出問題其實(shí)是因?yàn)楹蠖私涌趫?bào)錯(cuò),返回?cái)?shù)據(jù)異常導(dǎo)致。而實(shí)際上,前端才是用戶直接觸及的端,所以出了問題,首先是在前端體現(xiàn)出來,首先也是找前端。

為了更好地定位問題是前端代碼還是接口問題,在這里推薦使用Fundebug的前端JavaScript監(jiān)控插件。該插件從0.1.0之后,就開始支持HTTP請(qǐng)求錯(cuò)誤的監(jiān)控。
例子
為了測(cè)試,我寫一個(gè)簡(jiǎn)單的例子。沒有用到任何復(fù)雜的框架,就是一個(gè)簡(jiǎn)單的HTML加上網(wǎng)絡(luò)請(qǐng)求的JS。
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Test HTTP Request</title>
</head>
<body>
<h1>This is a test for HTTP request error !</h1>
<button onclick="loadRequest()">Click</button>
</body>
<script type="text/javascript">
function loadRequest() {
var oReq = new XMLHttpRequest();
oReq.open("GET", "http://127.0.0.1:8080/example/");
oReq.send();
}
</script>
</html>然后,在Fundebug創(chuàng)建一個(gè)JS監(jiān)控項(xiàng)目,并拷貝接入代碼:

完整代碼如下所示:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Test HTTP Request</title>
</head>
<body>
<h1>This is a test for HTTP request error !</h1>
<button onclick="loadRequest()">Click</button>
</body>
<script type="text/javascript">
function loadRequest() {
var oReq = new XMLHttpRequest();
oReq.open("GET", "http://127.0.0.1:8080/example/");
oReq.send();
}
</script>
<script src="https://js.fundebug.cn/fundebug.1.0.3.min.js"
apikey="YOUR-API-KEY"></script>
</html>使用http-server命令直接運(yùn)行(推薦小技巧:使用npm install -g http-server安裝一個(gè)簡(jiǎn)單的服務(wù)器。),在瀏覽器輸入地址http://127.0.0.1:8080訪問該頁(yè)面。

點(diǎn)擊頁(yè)面上的click按鈕,就會(huì)觸發(fā)這個(gè)錯(cuò)誤。在Fundebug的控制臺(tái)可以看到報(bào)錯(cuò)信息,如下所示:

點(diǎn)擊該錯(cuò)誤,可以查看報(bào)錯(cuò)詳情。一個(gè)http的get請(qǐng)求訪問http://127.0.0.1:8080/example/,然后返回404。當(dāng)然,http的請(qǐng)求錯(cuò)誤類型有很多,不僅可以抓404, 什么401啊,403啊,500啊等等都能抓過來。

另外,通過用戶行為也可以很好地看到觸發(fā)報(bào)錯(cuò)的過程:

跨域問題
如果訪問的是非同源的請(qǐng)求,那么報(bào)錯(cuò)會(huì)拿不到狀態(tài)碼,也就是說status不會(huì)是404,而是0。
總結(jié)
監(jiān)控HTTP請(qǐng)求錯(cuò)誤有什么好處?
第一時(shí)間發(fā)現(xiàn)HTTP請(qǐng)求出現(xiàn)狀況;
及時(shí)告知后端服務(wù)器出了問題,快速應(yīng)對(duì);
分析前端其它bug的時(shí)候多了一份信息參考;
用戶反饋服務(wù)無法使用的時(shí)候,可以快速知道問題原因。
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
小程序頁(yè)面onload(),onready()加載順序詳解
本文主要介紹了小程序頁(yè)面onload(),onready()加載順序,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-02-02
bootstrap折疊調(diào)用collapse()后data-parent不生效的快速解決辦法
今天做的項(xiàng)目,用到了bootstrap的折疊功能,這個(gè)功能需要只展開一個(gè)折疊框,點(diǎn)擊一個(gè)就會(huì)自動(dòng)隱藏另一個(gè),實(shí)現(xiàn)起來也很容易,但是在測(cè)試時(shí)同事提出了一個(gè)bug,怎么解決呢?今天小編通過本教程給大家分享下2017-02-02
不提示直接關(guān)閉網(wǎng)頁(yè)窗口的JS示例代碼
本篇文章主要是對(duì)不提示直接關(guān)閉網(wǎng)頁(yè)窗口的JS示例代碼進(jìn)行了介紹,需要的朋友可以過來參考下,希望對(duì)大家有所幫助2013-12-12
微信小程序webview與h5通過postMessage實(shí)現(xiàn)實(shí)時(shí)通訊的實(shí)現(xiàn)
這篇文章主要介紹了微信小程序webview與h5通過postMessage實(shí)現(xiàn)實(shí)時(shí)通訊的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-08-08
Ionic實(shí)現(xiàn)頁(yè)面下拉刷新(ion-refresher)功能代碼
這篇文章主要介紹了使用Ionic實(shí)現(xiàn)頁(yè)面下拉刷新(ion-refresher)功能的代碼,感興趣的朋友一起看看吧2016-06-06
js中requestAnimationFrame()解讀與使用示例
requestAnimationFrame()是JavaScript中用于創(chuàng)建高效、流暢動(dòng)畫的核心方法,它與瀏覽器的重繪過程同步,確保每次動(dòng)畫更新都與顯示器刷新率同步,下面就來一起了解一下2024-09-09

