我有一个Electron.js应用程序,沿着正常的主进程外,我还spawn
主进程的副本。在主进程的副本中,我加载了C++本机模块,这些模块可能会在生产中的某些机器上导致问题,我收集了该派生进程的遥测数据。
sandbox.ts
...
export const isSandbox = (): boolean => process.env.SANDBOXED === '1';
...
if (isSandbox()) {
console.log('startSandbox - already in sandbox');
return;
}
const exePath = app.getPath("exe");
const spawnProcess = spawn(exePath, process.argv.slice(1), {
env: {
...process.env,
SANDBOXED: "1",
},
});
...
我还使用Sentry来收集应用程序的本地崩溃。我这样初始化它:
index.ts-这个文件在正常和衍生的“沙箱”进程中运行
...
const SentryEnv = import.meta.env.VITE_SENTRY_ENVIRONMENT;
if (["testing", "beta", "production"].includes(SentryEnv))
Sentry.init({
dsn: "https://000@sentry.myapp.app/1",
environment: SentryEnv,
});
Sentry.setTag("sandbox", isSandbox());
...
然而,发生的情况是,主第一个进程总是将标记设置为false,无论错误是从主进程还是从派生进程引发的。
我猜这就是哨兵合并上下文的方法
我如何才能实现我所需要的?所以衍生的进程错误在Sentry UI中标记为Sandbox: true
,而正常的主进程错误标记为Sandbox: false
?
1条答案
按热度按时间8xiog9wr1#
找到一个解决方法:
index.ts
如果我使用Electron
crashReporter
API设置dmp元数据,它们就会正确地出现在Sentry UI中。