还原 JavaScript 错误
SDK 默认将应用目录中的栈帧转换为稳定的app:///<相对路径>。无论用户把应用安装到哪里,同一份构建都会得到相同的路径。
例如:
/dist/renderer。
1. 统一 service 和 version
Flashduty 使用以下信息匹配 sourcemap:- 事件中的
service - 事件中的
version - 栈帧中的压缩文件路径
main.ts
renderer.ts
version 不会自动写入渲染进程事件,因此两侧都需要配置。
2. 生成 sourcemap
为主进程和渲染进程构建开启 sourcemap:3. 上传主进程和渲染进程产物
安装 Flashduty CLI,然后分别上传两个进程的 sourcemap:--minified-path-prefix 应与错误详情中栈帧的目录一致。不要在前缀中包含 app:///。
自定义路径映射
大多数项目可以直接使用默认的app:/// 路径。只有构建目录无法按应用根目录表达时,才配置 normalizeStackPath:
main.ts
undefined 时,SDK 会继续使用默认规则。
还原原生崩溃
原生崩溃来自 ElectroncrashReporter 生成的 minidump。未上传符号时,调用栈会显示模块和地址:
1. 准备符号文件
从 Electron releases 下载与你实际发布的 Electron 版本、操作系统和 CPU 架构完全一致的符号包:.node 插件,请使用 dump_syms 为这些模块生成 .sym 文件。
2. 上传符号
将.sym 文件放在同一个目录中,然后执行:
--dry-run 可以先查看将要上传的文件。
单个 Breakpad .sym 文件的大小上限为 2 GB,超过限制的上传会被拒绝(HTTP 413)。
原生符号按模块 ID 匹配。命令中的 service 和 release-version 用于标记上传批次,方便查询,不参与符号匹配。这一点与 JavaScript sourcemap 不同。
3. 随版本发布符号
每次升级 Electron 或重新构建原生模块后,模块 ID 都可能变化。请为实际发布的每个操作系统和 CPU 架构上传对应符号。 未上传符号不会阻止崩溃事件上报。你可以先收到地址形式的崩溃栈,再补传符号;历史崩溃会在查看时重新还原。在控制台上传 Electron 符号
除了命令行,你也可以在控制台完成原生符号的上传。进入 应用管理 → 源码管理 → Electron,该页签列出已上传的 Electron 符号:每个原生模块一行,展示模块、Debug ID、架构、服务、版本、大小和上传时间。列表支持按 Debug ID 自由搜索(该值即崩溃事件binary_images 携带的模块 Debug ID),并可添加服务、版本和 build_id 筛选条件。
点击 上传 Electron 符号 打开上传面板,填写以下参数后,面板会生成对应的上传命令:
41.1.0)并选择 平台 / 架构(darwin-arm64、darwin-x64、win32-x64、win32-arm64、linux-x64、linux-arm64),即可生成对应版本的官方符号包下载地址,以及一条「下载 → 解压 → 上传」的一行命令:
.node 插件,展开 为自己的原生模块生成符号(可选),使用 dump_syms 生成 .sym 文件放入同一目录,例如:
package.json 读取 Electron 版本,下载对应平台和架构的官方符号包并解压,如有自定义原生模块或 .node 插件则用 dump_syms 生成 .sym,最后通过 flashcat-cli electron-symbols upload 上传。提示词会附带本页文档链接,并提醒通过环境变量注入 API Key、不要将密钥提交到仓库。
验证错误还原
JavaScript 错误
- 在测试版本中触发一个包含稳定调用栈的错误
- 在错误详情中确认事件的
service和version - 检查栈帧路径与
--minified-path-prefix是否对应 - 确认详情页显示原始文件名、函数名和源码位置
原生崩溃
- 使用与发布版本相同的 Electron 构建触发测试崩溃
- 重新启动应用,让 SDK 上报 minidump
- 在崩溃详情中确认 Electron 模块帧已显示函数名和行号
相关页面
高级配置
配置版本、路径映射和其他进阶选项。
数据收集
了解 JavaScript 错误与原生崩溃的采集方式。