Web Workers
了解如何在 Web Workers API 中使用 Sentry 的 Browser SDK。
Sentry 的 Browser SDK 支持 Web Workers API。要捕获来自 Web Workers 的未处理错误:
使用您的包管理器安装 @sentry/browser
:
Copied
npm install @sentry/browser --save
然后您可以使用它:
index.js
Copied
import * as Sentry from "@sentry/browser";
Sentry.init({
dsn: "https://examplePublicKey@o0.ingest.sentry.io/0",
});
const worker = new Worker("worker.js");
// Errors from `onmessage` callback of `worker.js`
// will be captured.
worker.postMessage("Hello!");
手动捕获
要手动捕获错误或消息(例如在 Web Workers 中使用 captureMessage
或 captureException
),Sentry 应在每个 Web Worker 的自身作用域内初始化。只有未处理的错误会在没有工作器级别初始化的情况下被捕获并发送到 Sentry。
worker.js
Copied
import * as Sentry from "@sentry/browser";
self.onmessage = (message) => {
// This will fail silently.
Sentry.captureMessage("Message received");
// This error will be captured.
throw new Error();
};
worker.js
Copied
import * as Sentry from "@sentry/browser";
Sentry.init({
dsn: "https://examplePublicKey@o0.ingest.sentry.io/0",
});
self.onmessage = (message) => {
// This message will be captured
Sentry.captureMessage("Message received");
// This error will also be captured.
throw new Error();
};
请注意,如果您在 Web Workers 中使用非默认集成,它们可能无法按预期工作。但作用域外启用的非默认集成不会受到影响,并将按预期工作。这包括会话重放(Session Replay)。
如果提供源映射,Sentry 的源映射集成在 Web Workers 中是支持的。了解更多关于向 Sentry 提供 源映射 的信息。