Black名單 (@marhoosh) 在 基于 Plasmo 架构的浏览器扩展异常处理实践:AppError + ErrorReporter + Sentry 中发帖
前言
最近在做一个基于 Plasmo 的浏览器扩展项目,技术栈主要是:
Plasmo
TypeScript
React
Chrome MV3
Sentry
在这个过程中,我发现浏览器扩展的异常处理,和普通前端页面其实不太一样。
在普通 Web 项目里,错误大多发生在一个页面上下文中;但在浏览器扩展里,代码通常会分散运行在多个上下文中,比如:
popup:扩展弹窗页面
content script:注入目标网站的脚本
background:后台 service worker
这就带来了几个典型问题:
错误来源分散,不容易统一管理
用户看到的报错和开发者需要的错误信息往往不是一回事
接入 Sentry 后,如果不做控制,很容易把邮箱、token、URL 参数等敏感信息也带上去
不同上下文的异常如果没有标签,线上排查效率会很低
所以我在项目里做了一套比较轻量、但很适合 Pla...