用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 相关文章推荐
Three.js源码阅读笔记(物体是如何组织的)
Dec 27 Javascript
javaScript矢量图表库-gRaphael几行代码实现精美的条形图/饼图/点图/曲线图
Jan 09 Javascript
简单漂亮的js弹窗可自由拖拽且兼容大部分浏览器
Oct 22 Javascript
用jQuery实现的智能隐藏、滑动效果的返回顶部代码
Mar 18 Javascript
jQuery实现瀑布流布局详解(PC和移动端)
Sep 01 Javascript
详解MVC如何使用开源分页插件(shenniu.pager.js)
Dec 16 Javascript
JS数组操作中的经典算法实例讲解
Jul 26 Javascript
面包屑导航详解
Dec 07 Javascript
推荐10款扩展Web表单的JS插件
Dec 25 Javascript
jQuery+ajax读取json数据并按照价格排序示例
Mar 28 jQuery
性能优化篇之Webpack构建速度优化的建议
Apr 03 Javascript
vue transition 在子组件中失效的解决
Nov 12 Javascript
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 判断常量,变量和函数是否存在
2009/04/26 PHP
IIS+fastcgi下PHP运行超时问题的解决办法详解
2013/06/20 PHP
PHP嵌套输出缓冲代码实例
2015/05/12 PHP
一个简单的php路由类
2016/05/29 PHP
PHP页面间传递值和保持值的方法
2016/08/24 PHP
JQUERY获取form表单值的代码
2010/07/17 Javascript
浅析JS刷新框架中的其他页面 &amp;&amp; JS刷新窗口方法汇总
2013/07/08 Javascript
js定时器的使用(实例讲解)
2014/01/06 Javascript
JS+CSS实现模仿浏览器网页字符查找功能的方法
2015/02/26 Javascript
js生成随机数的方法实例
2015/10/16 Javascript
webstorm添加vue.js支持的方法教程
2017/07/05 Javascript
js时间戳与日期格式之间相互转换
2017/12/11 Javascript
基于VUE移动音乐WEBAPP跨域请求失败的解决方法
2018/01/16 Javascript
Vue中使用vue-i18插件实现多语言切换功能
2018/04/25 Javascript
微信小程序实现类似微信点击语音播放效果
2020/03/30 Javascript
node.js使用mongoose操作数据库实现购物车的增、删、改、查功能示例
2019/12/23 Javascript
NodeJS模块Buffer原理及使用方法解析
2020/11/11 NodeJs
python读取Android permission文件
2013/11/01 Python
Django中模型Model添加JSON类型字段的方法
2015/06/17 Python
Python实现pdf文档转txt的方法示例
2018/01/19 Python
python对文件目录的操作方法实例总结
2019/06/24 Python
让Django的BooleanField支持字符串形式的输入方式
2020/05/20 Python
python cv2.resize函数high和width注意事项说明
2020/07/05 Python
Python爬虫之爬取淘女郎照片示例详解
2020/07/28 Python
OpenCV图片漫画效果的实现示例
2020/08/18 Python
Python 解析xml文件的示例
2020/09/29 Python
英国最大的在线照明商店:Litecraft
2020/08/31 全球购物
创业计划书撰写原则
2014/01/25 职场文书
英文演讲稿开场白
2014/08/25 职场文书
外科护士长工作总结
2015/08/12 职场文书
2016秋季小学开学寄语
2015/12/03 职场文书
教师学期述职自我鉴定
2019/08/16 职场文书
python利用pandas分析学生期末成绩实例代码
2021/07/09 Python
为什么MySQL选择Repeatable Read作为默认隔离级别
2021/07/26 MySQL
JavaScript架构搭建前端监控如何采集异常数据
2022/06/25 Javascript
Win11无法安装更新补丁KB3045316怎么办 附KB3045316补丁修复教程
2022/08/14 数码科技