用Fundebug插件记录网络请求异常的方法


Posted in Javascript onFebruary 21, 2019

在服务端,不管我们使用Node.js、Java、PHP还是Python等等,都会用日志以文本的形式记录请求以及报错信息。这个对于后端做事后分析是很有用的。

另一方面,前端有时候出问题其实是因为后端接口报错,返回数据异常导致。而实际上,前端才是用户直接触及的端,所以出了问题,首先是在前端体现出来,首先也是找前端。

用Fundebug插件记录网络请求异常的方法

为了更好地定位问题是前端代码还是接口问题,在这里推荐使用Fundebug的前端JavaScript监控插件。该插件从0.1.0之后,就开始支持HTTP请求错误的监控。

例子

为了测试,我写一个简单的例子。没有用到任何复杂的框架,就是一个简单的HTML加上网络请求的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创建一个JS监控项目,并拷贝接入代码:

用Fundebug插件记录网络请求异常的方法

完整代码如下所示:

<!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命令直接运行(推荐小技巧:使用npm install -g http-server安装一个简单的服务器。),在浏览器输入地址http://127.0.0.1:8080访问该页面。

用Fundebug插件记录网络请求异常的方法

点击页面上的click按钮,就会触发这个错误。在Fundebug的控制台可以看到报错信息,如下所示:

用Fundebug插件记录网络请求异常的方法

点击该错误,可以查看报错详情。一个http的get请求访问http://127.0.0.1:8080/example/,然后返回404。当然,http的请求错误类型有很多,不仅可以抓404, 什么401啊,403啊,500啊等等都能抓过来。

用Fundebug插件记录网络请求异常的方法

另外,通过用户行为也可以很好地看到触发报错的过程:

用Fundebug插件记录网络请求异常的方法

跨域问题

如果访问的是非同源的请求,那么报错会拿不到状态码,也就是说status不会是404,而是0。这个比较蛋疼!

总结

监控HTTP请求错误有什么好处?

第一时间发现HTTP请求出现状况;

及时告知后端服务器出了问题,快速应对;

分析前端其它bug的时候多了一份信息参考;

用户反馈服务无法使用的时候,可以快速知道问题原因。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
JS之小练习代码
Oct 12 Javascript
JavaScript判断DOM何时加载完毕的技巧
Nov 11 Javascript
js遮罩效果制作弹出注册界面效果
Jan 25 Javascript
Angular X中使用ngrx的方法详解(附源码)
Jul 10 Javascript
Vue的百度地图插件尝试使用
Sep 06 Javascript
Angular表格神器ui-grid应用详解
Sep 29 Javascript
vue组件编写之todolist组件实例详解
Jan 22 Javascript
vue + webpack如何绕过QQ音乐接口对host的验证详解
Jul 01 Javascript
微信小程序实现天气预报功能
Jul 18 Javascript
vue同个按钮控制展开和折叠同个事件操作
Jul 29 Javascript
js实现详情页放大镜效果
Oct 28 Javascript
jQuery实现动态操作table行
Nov 23 jQuery
VUE搭建手机商城心得和遇到的坑
Feb 21 #Javascript
利用vue重构有赞商城的思路以及总结整理
Feb 21 #Javascript
JavaScript数据结构与算法之二叉树遍历算法详解【先序、中序、后序】
Feb 21 #Javascript
Vue动态生成el-checkbox点击无法赋值的解决方法
Feb 21 #Javascript
JavaScript数据结构与算法之基本排序算法定义与效率比较【冒泡、选择、插入排序】
Feb 21 #Javascript
JavaScript数据结构与算法之二叉树插入节点、生成二叉树示例
Feb 21 #Javascript
angularjs实现table表格td单元格单击变输入框/可编辑状态示例
Feb 21 #Javascript
You might like
php对大文件进行读取操作的实现代码
2013/01/23 PHP
ASP和PHP实现生成网站快捷方式并下载到桌面的方法
2014/05/08 PHP
PHP实现自动登入google play下载app report的方法
2014/09/23 PHP
php实现可用于mysql,mssql,pg数据库操作类
2014/12/13 PHP
如何使用PHP给图片加水印
2016/10/12 PHP
Javascript学习笔记-详解in运算符
2011/09/13 Javascript
让人期待的2011年度最佳 jQuery 插件分享
2012/03/16 Javascript
Jquery跳到页面指定位置的方法
2014/05/12 Javascript
一个JavaScript递归实现反转数组字符串的实例
2014/10/14 Javascript
js实现checkbox全选、不选与反选的方法
2015/02/09 Javascript
javascript实现给定半径求出圆的面积
2015/06/26 Javascript
javascript创建对象的几种模式介绍
2016/05/06 Javascript
jQuery代码实现表格中点击相应行变色功能
2016/05/09 Javascript
Adapter适配器模式在JavaScript设计模式编程中的运用分析
2016/05/18 Javascript
js实现拖拽功能
2017/03/01 Javascript
详解使用create-react-app添加css modules、sasss和antd
2018/07/31 Javascript
JS实现选项卡效果的代码实例
2019/05/20 Javascript
vue-resource:jsonp请求百度搜索的接口示例
2019/11/09 Javascript
javascript/jquery实现点击触发事件的方法分析
2019/11/11 jQuery
java遇到微信小程序 &quot;支付验证签名失败&quot; 问题解决
2019/12/22 Javascript
vue实例的选项总结
2020/06/09 Javascript
Vue2.x和Vue3.x的双向绑定原理详解
2020/11/05 Javascript
[44:43]完美世界DOTA2联赛决赛日 FTD vs GXR 第一场 11.08
2020/11/11 DOTA
Python实现测试磁盘性能的方法
2015/03/12 Python
Python新手在作用域方面经常容易碰到的问题
2015/04/03 Python
Python实现进程同步和通信的方法
2018/01/02 Python
Python中elasticsearch插入和更新数据的实现方法
2018/04/01 Python
python中int与str互转方法
2018/07/02 Python
python数据预处理方式 :数据降维
2020/02/24 Python
python实现PolynomialFeatures多项式的方法
2021/01/06 Python
澳大利亚便宜的家庭购物网站:CrazySales
2018/02/06 全球购物
企划主管岗位职责
2013/12/12 职场文书
《晏子使楚》教学反思
2014/02/08 职场文书
八年级英语教学计划
2015/01/23 职场文书
SpringBoot工程下使用OpenFeign的坑及解决
2021/07/02 Java/Android
CSS SandBox应用场景及常见问题
2022/06/25 HTML / CSS