@backtrace/react

中文文档
0.5.2发布于 2026/10/30MITTypeScriptESM + CJS近 30 天下载 5769

回溯跟踪- Javascription 重现集成

中文使用文档
文档目录17 节
  1. 目录
  2. 基本融合
  3. 安装软件包
  4. 整合 SDK
  5. 添加回溯错误边界
  6. 上传源代码图
  7. 报告特性出错
  8. 属性
  9. 文件附件
  10. 面包屑
  11. 会话重放
  12. 应用稳定性计量
  13. 高级 SDK 特性
  14. 回溯跟踪
  15. 手动发送错误
  16. 修改/skip 错误报告
  17. SDK 方法覆盖

回溯跟踪重现 SDK

回溯跟踪 在您的生产软件中抓取和处理的报告和未处理的例外 您可以通过完整的产品生命周期管理应用质量.

这个 @ 回溯跟踪/反应 SDK 将您的 React 应用程序连接到 Backtrace 。 基本的整合是快速和容易的, 之后可以探索丰富的回溯追踪特征集.

目录

  1. 基本整合 - 报告您的第一个错误
  2. 报告特性出错
  3. 高级 SDK 特性

基本融合

安装软件包

$ npm install @backtrace/react

整合 SDK

在所有其他脚本之前在您的应用程序中添加以下代码来向 Backtrace 报告客户端错误 .

// Import the BacktraceClient from @backtrace/react with your favorite package manager.
import { BacktraceClient, BacktraceConfiguration } from '@backtrace/react';

// Configure client options
const options: BacktraceConfiguration = {
    // Name of the website/application
    name: 'MyWebPage',
    // Version of the website
    version: '1.2.3',
    // Submission url
    // <universe> is the subdomain of your Backtrace instance (<universe>.backtrace.io)
    // <token> can be found in Project Settings/Submission tokens
    url: 'https://submit.backtrace.io/<universe>/<token>/json',
};

// Initialize the client with the options
const client = BacktraceClient.initialize(options);

// By default, Backtrace will send an error for Uncaught Exceptions and Unhandled Promise Rejections

// Manually send an error
client.send(new Error('Something broke!'));

添加回溯错误边界

这个 @backtrace/react SDK提供一个错误边界,在渲染过程中处理错误,发送错误并 组件堆栈到回溯跟踪,并允许您提供倒置组件.

道具 :

type RenderFallback = () => ReactElement;

export interface Props {
    children: ReactNode;
    fallback?: ReactElement | RenderFallback;
    name?: string; // to identify the ErrorBoundary when multiple are used
}

用法 :

import { ErrorBoundary } from '@backtrace/react';
import Fallback from './components/Fallback';

<ErrorBoundary name="your-boundary-name" fallback={Fallback}>
    <App />
</ErrorBoundary>;

上传源代码图

客户端错误报告基于已修改的代码. 上传源代码和源代码以解析已修改的代码 您的原始源标识符.

(原始内容存档于2018-10-21) (原始内容存档于2017-09-21)

报告特性出错

属性

自定义属性是可以添加到您错误报告中的密钥值对. 它们被用于报告汇总, 对错误进行排序和过滤,可以提供更好的背景数据,而且可以提供更多的数据。 它们是许多 高级回溯跟踪特性,详见 报告文档。 。 。 .

有几个地方可以添加,修改或删除属性.

将属性对象附加到 BacktraceClient

可以在 回溯跟踪 初始化。 本列表 属性将包含在每个错误报告,称为全局属性.

// Create an attributes object that can be modified throughout runtime
const attributes: Record<string, unknown> = {
    release: 'PROD',
};

// BacktraceClientOptions
const options: BacktraceConfiguration = {
    name: 'MyWebPage',
    version: '1.2.3',
    url: 'https://submit.backtrace.io/<universe>/<token>/json',

    // Attach the attributes object
    userAttributes: attributes,
};

// Initialize the client
const client = BacktraceClient.initialize(options);

您还可以包括创建报告时要解决的属性 :

// BacktraceClientOptions
const options: BacktraceConfiguration = {
    name: 'MyWebPage',
    version: '1.2.3',
    url: 'https://submit.backtrace.io/<universe>/<token>/json',

    // Attach the attributes object
    userAttributes: () => ({
        user: getCurrentUser(),
    }),
};

// Initialize the client
const client = BacktraceClient.initialize(options);

应用程序运行时添加属性

一旦装入了特定数据(例如用户已经登录),就可以在运行期间设置全局属性.

const client = BacktraceClient.initialize(options);
...

client.addAttribute({
    "clientID": "de6faf4d-d5b5-486c-9789-318f58a14476"
})

您也可以添加创建报表时要解决的属性 :

const client = BacktraceClient.initialize(options);
...

client.addAttribute(() => ({
    "clientID": resolveCurrentClientId()
}))

添加属性到错误报告

BacktraceReport 对象的属性列表可以被直接修改.

const report: BacktraceReport = new BacktraceReport('My error message', { myReportKey: 'myValue' });
report.attributes['myReportKey'] = 'New value';

文件附件

文件可以附在错误报告上. 当将回溯跟踪连接起来, 更新 回溯跟踪 或 动态的特定报告 。 当在 BacktraceClient 中包含附件时, 所有文件都将是 与每份报告一起上传.

// Import attachment types from @backtrace/react
import { BacktraceStringAttachment, BacktraceUint8ArrayAttachment  } from "@backtrace/react";

// BacktraceStringAttachment should be used for text object like a log file, for example
const attachment1 = new BacktraceStringAttachment("logfile.txt", "This is the start of my log")

// BacktraceUint8ArrayAttachment should be used for binary files
const attachment2 = new BacktraceUint8ArrayAttachment("connection_buffer", new Uint8Array(2));

// Setup array of files to attach
const attachments = [attachment1];

// BacktraceClientOptions
const options = {
    name: "MyWebPage",
    version: "1.2.3",
    url: "https://submit.backtrace.io/<universe>/<token>/json",

    // Attach the files to all reports
    attachments,
}

const client = BacktraceClient.initialize(options);

// Later decide to add an attachment to all reports
client.addAttachment(attachment2)

// After catching an exception and generating a report
try {
    throw new Error("Caught exception!")
} catch (error) {
    const report = const report = new BacktraceReport(error, {}, [new BacktraceStringAttachment("CaughtErrorLog", "some error logging data here")])
    client.send(report);
}

面包屑

Breadcrumbs是时间顺序数据追踪运行时间事件的片段. 这个SDK默认记录了一些事件, 也可以加入手动面包屑.

(面包屑特性文档)

面包屑配置

选项名称类型说明默认需要吗?
enable布尔确定面包屑支持是否启用 。 默认情况下, 值会被设定为真 .true
  • - [
logLevelBradecrumbLog 级别指定要包含的日志级别重度。 默认情况下包含所有日志 .所有日志
  • - [
eventType面包屑Type指定要包含的面包屑类型。 默认情况下,所有类型都包括在内.所有类型
  • - [
maximumBreadcrumbs数目指定由库存储的最大面包屑数量。 默认情况下,只有100个面包屑被储存.100
  • - [
intercept(breadcrumb: RawBreadcrumb) * * * RawBreadcrumb * * * 未定义;检查面包屑并允许修改. 如果未定义的值正在从方法被还原,则不会将面包屑添加到面包屑储存中.所有面包屑
  • - [
import { BacktraceClient, BacktraceConfiguration } from '@backtrace/react';

// BacktraceClientOptions
const options: BacktraceConfiguration = {
    // ignoring all but breadcrumbs config for simplicity
    breadcrumbs: {
        // breadcrumbs configuration
    },
};

// Initialize the client
const client = BacktraceClient.initialize(options);

默认面包屑

类型说明
HTTP 密码添加带有url的面包crumb, 请求类型, 并重现获取或 XMLHttp 请求的状态 .
历史添加面包屑 在pushstate和流行状态.
文件/窗口为文档添加面包屑。单击、文档.dbl点击、文档.drag、文档.trot、窗口.load、窗口.unload、窗口.pagehide、窗口.pageshow、窗口.online和窗口.offline.
控制台每次开发者使用控制台日志时都会添加面包屑.

拦截面包屑

如果PII或其他信息需要从面包屑中过滤,您可以使用截取功能来跳过或过滤 清除敏感信息。 任何RawBreadcrumb返回的会用于面包crumb. 如果返回未定义,则无 将添加面包屑.

手动面包屑

除了所有自动收集的默认面包屑外,您还可以手动添加面包屑: 属于你自己的.

client.breadcrumbs?.info('This is a manual breadcrumb.', {
    customAttr: 'wow!',
});

会话重放

可选 @backtrace/session-replay 模块允许您捕捉并重放导致出错的用户交互。 这为您的错误报告提供了类似视频的上下文,从而更容易复制和调试问题.

会话重放模块的设计以隐私为最高优先. 默认情况下,它会自动遮盖所有文本和输入字段来避免捕获敏感的用户数据.

关于会话重放配置、取样和高级隐私控制的全部细节,请参见 会话重放模块文档。 。 。 .

1. 安装额外软件包

何况 @backtrace/react,您还需要安装会话重放软件包.

$ npm install @backtrace/session-replay

2. 向客户端添加模块

要启用会话重放, 您必须使用 BacktraceClient. builder () 并添加 BacktraceClientReplay Module 。 这将取代标准的 BacktraceClient. 初始化 () .

// Import the necessary modules
import { BacktraceClient, BacktraceConfiguration } from '@backtrace/react';
import { BacktraceSessionReplayModule } from '@backtrace/session-replay';

// Configure client options
const options: BacktraceConfiguration = {
    name: 'MyWebPage',
    version: '1.2.3',
    url: 'https://submit.backtrace.io/<universe>/<token>/json',
};

// Initialize the client using the builder to add the session replay module
const client = BacktraceClient.builder(options)
    .useModule(
        new BacktraceSessionReplayModule({
            // Configuration for session replay goes here.
            maxEventCount: 100,
            privacy: {
                blockClass: 'do-not-send',
            },
            sampling: {
                input: 'last',
            }
        }),
    )
    .build();

// The client is now initialized with Session Replay enabled.
// Any errors captured by the client or the ErrorBoundary will now include a session replay.

当捕获出错时,将在调试器页面上为回溯跟踪UI中的特定出错提供会话重放的链接.


应用稳定性计量

Backtrace React SDK具有发送使用量表的能力,可以在Backtrace UI中取景.

(标准计量特征文件)

计量配置

选项名称类型说明默认需要吗?
metricsSubmissionUrl字符串Metrics服务器主机名. 默认值设定为 https://events.backtrace.io (英语)。 。 。 .https://events.backtrace.io
  • - [
enable布尔确定是否启用了参数支持。 默认情况下, 值会被设定为真 .true
  • - [
autoSendInterval数目指示崩溃自由度量度被发送到 Backtrace 的频率 。 间隔是一个以ms为单位的值. 默认情况下,会话事件会在应用程序启动/完成时发送,在应用程序运行期间每30分钟发送一次. 如果值设定为 0 。 自动发送模式已禁用 。 在这种情况下,应用程序需要手动维护发送模式.应用程序启动/完成时
  • - [
size数目表示在自动提交前, 计量存储可以存储多少个事件 .50
  • - [

计量使用量

// metrics will be undefined if not enabled
client.metrics?.send();

高级 SDK 特性

回溯跟踪

后追Client是SDK的主要类. 当这个单通对象被即时化时, 开始监测错误, 它会 撰写和发送报告,说明未处理的错误和未处理的承诺拒绝。 也可以用来手动发送 例外和拒绝处理者的报告。 不创建此对象的一个以上实例 .

回溯跟踪选择

BacktraceClient 初始化后通过的选项如下 .

选项名称类型说明默认需要吗?
url字符串将错误发送到的提交 URL
  • - [x]
name字符串您的申请名称
  • - [x]
version字符串您的应用程序版本
  • - [x]
token字符串错误的提交符 。 只有在直接提交回溯跟踪 URL 时才需要这样做 。 (不常见)
  • - [
userAttributes词典在 Backtrace UI 中可以被过滤并相加的附加属性.
  • - [
attachments回溯跟踪连接 []附加文件将随错误报告一起发送 。 见 文件附件
  • - [
beforeSend(数据:回溯追踪数据) 后跟踪 Data QQ 未定义每次在管理环境中发生例外时触发一个事件,这使得您可以跳过报告(通过返回一个无效值)或者修改库在发送报告前收集的数据. 您可以使用"先发送"事件来扩展属性或基于应用程序在例外时拥有的数据的JSON对象数据. 见 修改/skip 错误报告(中文(简体) )
  • - [
skipReport(报告:回溯追踪报告)如果您想要忽略特定类型的错误报告, 我们建议您使用跳过报告调用 。 通过使用它,根据报告生成的数据,可以决定过滤报告,或者发送到回溯追踪.
  • - [
captureUnhandledErrors布尔启用未处理错误true
  • - [
captureUnhandledPromiseRejections布尔启用未处理的承诺拒绝true
  • - [
timeout整数要等多久才能确定连接时间15000
  • - [
ignoreSslCertificate布尔忽略 SSL 证书出错false
  • - [
rateLimit整数限制客户端每分钟发送的报告数量 。 如果设定为"0",则没有限制. 如果设定为大于"0"的值并达到值,客户端直到下一分钟才会发送任何报告.0
  • - [
metrics回溯跟踪量表选项见 回溯跟踪稳定度量
  • - [
breadcrumbs后跟踪 Breadcrumbs 设置见 后跟踪面包屑
  • - [

手动发送错误

将错误发送到 Backtrace 有几种方法 。 关于定义的更详细情况 client.send() 见 方法 见下文.

// send as a string
await client.send('This is a string!');

// send as an Error
await client.send(new Error('This is an Error!'));

// as a BacktraceReport (string)
await client.send(new BacktraceReport('This is a report with a string!'));

// as a BacktraceReport (Error)
await client.send(new BacktraceReport(new Error('This is a report with a string!')));

修改/skip 错误报告

当管理环境中出现例外,您可以附加一个处理器时,会触发发送前的事件. 您可以使用“ 发送前” 事件来擦除 PII, 或者根据您的应用程序的数据扩展属性或 JSON 对象数据 在例外时有。 报告可以通过返回一个无效值被完全跳过 .

const client = BacktraceClient.initialize({
    url: SUBMISSION_URL,
    name: '@backtrace/react-example',
    version: '0.0.1',
    beforeSend: (data: BacktraceData) => {
        // skip the report by returning a null from the callback
        if (!shouldSendReportToBacktrace(data)) {
            return undefined;
        }
        // apply custom attribute
        data.attributes['new-attribute"] = 'apply-data-in-callback';
        return data;
    },
});

SDK 方法覆盖

BacktraceClient. buildinger 用于推翻默认的 BacktraceClient 方法. 文件与 http 操作覆盖 例如,可用于在休息或运动中执行数据自定义加密.

不使用这些操作来修改数据对象。 见 修改/skip 错误报告 页:1 用于修改报告然后将其发送到 Backtrace 的正确方法.

const client = BacktraceClient.builder(options)
    .useRequestHandler(requestHandler)
    .useBreadcrumbSubscriber(breadcrumbSubscriber)
    .addAttributeProvider(attributeProvider)
    .build();

版本与发布记录

@backtrace/react 共发布 8 个版本,首次发布于 2023/10/30;过去 12 个月发布了 2 个版本。

版本发布日期距今
0.5.2latest2026/10/309 天前
0.5.12026/05/235 个月前
0.5.02025/07/161.3 年前
0.4.12024/11/152 年前
0.4.02024/09/062 年前
0.3.12024/06/102 年前

关于 @backtrace/react 的常见问题

@backtrace/react 是什么?

回溯跟踪- Javascription 重现集成

如何安装 @backtrace/react?

在项目目录运行 npm install @backtrace/react,或使用 pnpm add / yarn add / bun add。它还需要宿主项目提供 peer 依赖:react(>=16.8.0)。npm 7 及以上与 pnpm 8 及以上默认会自动安装必需的 peer 依赖,Yarn 需要手动安装。

@backtrace/react 支持 TypeScript 吗?

支持。包内自带 TypeScript 类型声明(package.json 声明了 types 入口),安装后即可获得类型提示,无需再安装 @types 包。

@backtrace/react 支持 ESM 还是 CommonJS?

同时提供 ES Module 与 CommonJS 入口,import 和 require() 都可以使用,打包工具会自动选择合适的版本。

@backtrace/react 可以商用吗?

@backtrace/react 使用 MIT 许可。宽松许可:允许商业使用、修改和再分发,通常只需在分发时保留原版权与许可声明。以上为概括,不构成法律意见,请以许可原文为准。

@backtrace/react 的下载量有多少?

根据 npm 官方下载统计,@backtrace/react 在 2026/10/08 – 2026/11/06 这 30 天内被下载 5,769 次,日均约 192 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入,适合横向比较热度,不能直接等同于使用人数。

@backtrace/react 还在维护吗?

最新版本 0.5.2 发布于 2026/10/30(9 天前);至今共发布 8 个版本,其中过去 12 个月发布了 2 个;首次发布于 2023/10/30。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。