POST
, 但是你使用了GET
之类 如果你使用了GraphQL
, 有可能你的schema与服务端API提供的不符, 也会出错.资源类异常的表现为, 页面空白, 未显示出想要的效果, 排版错误 等. 如果只是样式文件出现问题, 本身并不影响使用, 似乎不应该排在影响程度最大的位置. 但是由于现在的前端站点已经越来越多的采用React
, Angular
, Vue
之类的前端框架, 导致页面几乎都是由JS生成的, 如果资源类引用错误, 将直接导致页面无法渲染(在这里, 我们只讨论CSR的情况, SSR另当别论)
编译时错误的表现为, 代码提示信息错误. 如果非要忽略这个错误信息继续往下写的话, 代码就无法运行了, 你如果使用了webpack类的打包的工具, 就会直接报错. 所以这个的影响虽然比较大, 但是也是比较容易发现的.
运行时异常的表现为, 进行交互的时候页面会出错, 这里的出错指的是只要没有达到用户的预期效果, 都成为出错, 不限于在console输出error, 或者页面空白等. 这个错误当然也很严重, 但是因为不影响普通的展示, 所以往后面排.
接口请求异常, 请求的时候打开控制台看network
里面就有很清楚的解释了. 这里一般代码里都会做一些处理, 错误情况影响会比较小.
所以影响的程度排名这里定位:
资源类异常>编译时错误>运行时异常>接口异常
对于编译时异常, 我们可以使用TypeScript
来进行解决, 使用TypeScript
你可以知道哪些API是系统提供的, 哪些是不提供的.
可是其它的错误信息, 我们应该怎么获取呢? 这里就要引入我们的主题了, 前端的错误监控
想要监控这些错误, 得依赖window提供的时间 onerror
, 当JavaScript运行时错误(包括语法错误)发生时, window 会触发一个 ErrorEvent 接口的 error 事件,并执行window.onerror()。
这里是 onerror
的签名
window.onerror = function(message, source, lineno, colno, error) { … }
后面我们会接着整理具体如何收集, 什么时机, 以及如何上报等.