返回首页
梳理一下
前面几天,我们已知 hub 是一个全局的 stack , 里面带作用域和对应平台的 client 实例
在初始化的时候,将构造方法传入,监控时在不同平台使用不同的适配罢了
而很多针对不同 framework 的包,也不过是针对这些框架的 钩子,或者自带的错误处理进行收集
今天来看个轻松的工具类
@sentry/utils
里文件很多大体如下
- async : forget 打印错误并且 resolve
- browser : htmlTreeAsString 看名字也知道
- dsn : 处理监控 endpoint 的,传入的一个 url 会被解构
- error : 自定义 SentryError 错误的,有意思的是,git 记录上显示写的人 叫
木土羽
有看不懂的点,贴一下error
import { setPrototypeOf } from './polyfill';
/** An error emitted by Sentry SDKs and related utilities. */
export class SentryError extends Error {
/** Display name of this error instance. */
public name: string;
public constructor(public message: string) {
super(message);
//下面的new.啥看不懂,方言还是语法糖??
this.name = new.target.prototype.constructor.name;
setPrototypeOf(this, new.target.prototype);
}
}
- index : 没啥说的
- instrument : 大量的劫持,很值得说,会单独写
- is : 一些判断方法,也值得一说
- logger : 自定义的 Logger,挂在全局
__SENTRY__
上 - Memo : 光看名字是看不懂的,进去一看。
Memo class used for decycle json objects. decycle 是归队的意思?
- misc : 也值得讲一讲
- node : node 相关的判断和提取信息
- object : fill 方法也值得好好讲讲
- path : 自己实现了基本方法
- polyfill : 垫片
- promisebuffer : 一个 promiselike 的泛型数组
- stacktrace : 拿方法名字,没有就
<anonymous>
- string : 处理字符串
- supports : 判断环境是否支持,写法也很有趣
try/catch
+new
- syncpromise : 同步的 promise?sentry 自己实现了一套 A+ 方案,值得一看并和 bluebird 进行比较
我猜他自己实现一套,主要还是怕全局的印象到吧,毕竟一个环境全局的 promise 可以随便劫持 - time : 时间处理主要就是
perf_hooks
performance
Date
的
列举了很多值得细看的,下一篇文章会一个一个 function 去看,去理解