用Fundebug插件記錄網(wǎng)絡(luò)請(qǐng)求異常的方法
在服務(wù)端,不管我們使用Node.js、Java、PHP還是Python等等,都會(huì)用日志以文本的形式記錄請(qǐng)求以及報(bào)錯(cuò)信息。這個(gè)對(duì)于后端做事后分析是很有用的。
另一方面,前端有時(shí)候出問(wèn)題其實(shí)是因?yàn)楹蠖私涌趫?bào)錯(cuò),返回?cái)?shù)據(jù)異常導(dǎo)致。而實(shí)際上,前端才是用戶(hù)直接觸及的端,所以出了問(wèn)題,首先是在前端體現(xiàn)出來(lái),首先也是找前端。
為了更好地定位問(wèn)題是前端代碼還是接口問(wèn)題,在這里推薦使用Fundebug的前端JavaScript監(jiān)控插件。該插件從0.1.0之后,就開(kāi)始支持HTTP請(qǐng)求錯(cuò)誤的監(jiān)控。
例子
為了測(cè)試,我寫(xiě)一個(gè)簡(jiǎn)單的例子。沒(méi)有用到任何復(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
訪問(wèn)該頁(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)求訪問(wèn)http://127.0.0.1:8080/example/
,然后返回404。當(dāng)然,http的請(qǐng)求錯(cuò)誤類(lèi)型有很多,不僅可以抓404, 什么401啊,403啊,500啊等等都能抓過(guò)來(lái)。
另外,通過(guò)用戶(hù)行為也可以很好地看到觸發(fā)報(bào)錯(cuò)的過(guò)程:
跨域問(wèn)題
如果訪問(wèn)的是非同源的請(qǐng)求,那么報(bào)錯(cuò)會(huì)拿不到狀態(tài)碼,也就是說(shuō)status不會(huì)是404,而是0。
總結(jié)
監(jiān)控HTTP請(qǐng)求錯(cuò)誤有什么好處?
第一時(shí)間發(fā)現(xiàn)HTTP請(qǐng)求出現(xiàn)狀況;
及時(shí)告知后端服務(wù)器出了問(wèn)題,快速應(yīng)對(duì);
分析前端其它bug的時(shí)候多了一份信息參考;
用戶(hù)反饋服務(wù)無(wú)法使用的時(shí)候,可以快速知道問(wèn)題原因。
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
有道JavaScript監(jiān)聽(tīng)瀏覽器的問(wèn)題
相信大家在web項(xiàng)目中,經(jīng)常會(huì)用到j(luò)avascript的事件監(jiān)聽(tīng)、事件冒泡這些東西。當(dāng)然也包括window.opener,window.showModalDialog這些父子窗口的互操作。2010-06-06js實(shí)現(xiàn)鍵盤(pán)上下左右鍵選擇文字并顯示在文本框的方法
這篇文章主要介紹了js實(shí)現(xiàn)鍵盤(pán)上下左右鍵選擇文字并顯示在文本框的方法,涉及javascript操作鍵盤(pán)事件及文本框的相關(guān)技巧,非常簡(jiǎn)單實(shí)用,需要的朋友可以參考下2015-05-05如何用uni-app實(shí)現(xiàn)頂部導(dǎo)航欄顯示按鈕和搜索框
本文介紹了如何用uni-app實(shí)現(xiàn)頂部導(dǎo)航欄顯示按鈕和搜索框,感興趣的同學(xué),可以參考下,并且試驗(yàn)一下。2021-06-06WEB前端開(kāi)發(fā)框架Bootstrap3 VS Foundation5
WEB前端開(kāi)發(fā)框架Bootstrap3 VS Foundation5,這篇文章主要介紹了Bootstrap3與Foundation5的五大區(qū)別,感興趣的小伙伴們可以參考一下2016-05-05深入理解javascript函數(shù)參數(shù)與閉包
函數(shù)是javascript的一等對(duì)象,想要學(xué)好javascript,就必須深刻理解函數(shù)。本文對(duì)javascript函數(shù)參數(shù)與閉包進(jìn)行詳細(xì)分析介紹。需要的朋友一起來(lái)看下吧2016-12-12javascript延時(shí)重復(fù)執(zhí)行函數(shù) lLoopRun.js
javascript延時(shí)重復(fù)執(zhí)行函數(shù) lLoopRun.js...2007-06-06javascript與webservice的通信實(shí)現(xiàn)代碼
關(guān)于javascript與webservice的通信,從理論上來(lái)說(shuō)實(shí)現(xiàn)應(yīng)該不難,主要是將服務(wù)器端的xml數(shù)據(jù)進(jìn)行一個(gè)簡(jiǎn)單的處理然后以一種適當(dāng)?shù)男问秸宫F(xiàn)成來(lái)。2010-12-12JavaScript的String字符串對(duì)象常用操作總結(jié)
String對(duì)象用于存儲(chǔ)字符串?dāng)?shù)據(jù),這里我們做了JavaScript的String字符串對(duì)象常用操作總結(jié),需要的朋友可以參考下2016-05-05Uniapp微信小程序?qū)崿F(xiàn)全局事件監(jiān)聽(tīng)并進(jìn)行數(shù)據(jù)埋點(diǎn)的方法
niapp起源?uni-app是一個(gè)使用Vue.js開(kāi)發(fā)所有前端應(yīng)用的框架,下面這篇文章主要給大家介紹了關(guān)于Uniapp微信小程序?qū)崿F(xiàn)全局事件監(jiān)聽(tīng)并進(jìn)行數(shù)據(jù)埋點(diǎn)的相關(guān)資料,需要的朋友可以參考下2022-11-11