# 前端错误监控与 SourceMap(Sentry)
30秒提纲:以“版本”为核心串起上报→定位→回滚。构建时生成并上传 SourceMap,运行时初始化 SDK(环境/版本/用户),设置采样与分级,接入面包屑与自定义标签,错误到来后能够1分钟内定位到具体文件与行号,并量化影响面。
# 1. 初始化与关键配置
import * as Sentry from '@sentry/browser'
Sentry.init({
dsn: 'https://<key>@sentry.io/<project>',
environment: process.env.NODE_ENV,
release: `${APP_NAME}@${APP_VERSION}`,
integrations: [new Sentry.BrowserTracing()],
tracesSampleRate: 0.1, // 性能追踪采样
replaysSessionSampleRate: 0.0,
beforeSend(event){
// 脱敏/过滤
return event
}
})
Sentry.setUser({ id: uid, ip_address: '{{auto}}' })
Sentry.setTags({ app: APP_NAME })
# 2. SourceMap 生成与上传(CI)
- 构建:生成
hidden-source-map或独立.sourcemap目录 - 上传:与 release 绑定,上传后页面禁止公开映射
- name: Build
run: npm run build
- name: Upload sourcemaps
run: |
export VERSION=$(node -p "require('./package.json').version")
npx sentry-cli releases new $VERSION
npx sentry-cli releases files $VERSION upload-sourcemaps ./.sourcemap --rewrite --url-prefix '~/'
npx sentry-cli releases finalize $VERSION
# 3. 错误分级与采样
- 采样:
sampleRate/tracesSampleRate;区分生产与灰度 - 分级:致命/高/中/低,结合影响范围(用户量/错误率)
- 面包屑:路由/接口/资源加载/自定义操作
# 4. 快速定位流程
- 查看 Issue → 版本/环境/平台维度
- 打开堆栈:确认是否已反混淆(需要 SourceMap)
- 关联最近变更 PR/部署
- 评估影响 → 决策回滚/修复
# 5. 最佳实践 Checklist
- [ ] 生产环境禁用 inline SourceMap,仅上传到 Sentry
- [ ] 为每次部署生成唯一 release,并写入页面(window.APP_VERSION)
- [ ] 统一错误上报入口,添加用户/会话/路由标签
- [ ] 采样与脱敏策略按环境区分
- [ ] 搭建“错误趋势/Top 崩溃/版本对比”看板