痛点
SDK 运行在客户的页面上,如果报错了,我们通常是最后一个知道的(等客户投诉)。 而且客户环境千奇百怪,很难复现。
我们需要一套完善的监控系统。
Sentry 集成
我们选择了 Sentry。但直接引入 Sentry SDK 有个问题:体积太大。
优化方案:Loader 模式
我们不直接打包 Sentry,而是写了一个极简的 Loader。
// sentry-loader.js
window.Sentry = window.Sentry || {};
window.Sentry.onLoad = function(callback) {
// ...
};
// 异步加载 Sentry CDN
loadScript('https://browser.sentry-cdn.com/7.0.0/bundle.min.js');
错误过滤
SDK 报错可能会混入宿主页面的报错。我们需要过滤出只属于 SDK 的错误。
Sentry.init({
beforeSend(event) {
// 只上报堆栈中包含 autoform-sdk 的错误
if (event.exception.values[0].stacktrace.frames.some(f => f.filename.includes('autoform-sdk'))) {
return event;
}
return null;
}
});
总结
通过 Sentry,我们能实时感知 SDK 的运行状态。每次发版后,盯着错误率曲线,心里踏实多了。
👉 官网地址:51bpms.com