跳至主内容

如何报告错误

非官方测试版翻译

本页面由 PageTurner AI 翻译(测试版)。未经项目官方认可。 发现错误? 报告问题 →

报告 React Native 的错误是参与项目贡献的最佳方式之一。我们使用 GitHub issues 作为处理新错误报告的主要渠道。

在提交新错误报告前,请先在问题跟踪系统中搜索是否已有相同问题。大多数情况下,这是最快的解决方法,因为其他人可能已经遇到过同样的问题。

如果在问题跟踪系统中找不到你的错误,可以新建一个 issue。创建新 issue 时,请确保:

  • 添加问题描述

  • 遵循 issue 模板 中的说明

  • 注明你使用的 React Native 版本

  • 提供 npx @react-native-community/cli info 命令的输出结果

  • 如适用,请附上问题的截图或录屏

所有错误报告都应包含 复现示例:即能帮助我们理解问题并协助调试的必要代码。

警告

由于接收问题数量庞大,复现示例是强制要求。没有复现示例的问题无法调查,极有可能被关闭。

提供复现示例

复现示例的目的是提供 重现 错误的方法。没有复现示例,我们将无法理解问题,更无法修复它。

复现示例应当 最小化:尽可能减少依赖(理想情况下仅保留 react-native),这有助于我们隔离问题根源。当 GitHub 要求提供复现示例时,他们 并非 索要你的全部源代码。

你需要创建一个 最小化 的项目,专门用于复现你报告的崩溃/错误/问题。

这个过程至关重要,因为创建复现示例本身往往就能解决问题。通过复现示例,能更容易判断问题是由你的特定配置引起,还是 React Native 本身的缺陷。

鉴于 React Native 的访问量,我们只接受以下其中一种复现形式:

  1. 对于大多数错误:提交 Pull Request 修改 RNTesterPlayground.js 文件来复现错误

  2. UI 相关错误:使用 Snack 创建示例

  3. 构建/升级相关错误:使用我们的 复现代码模板 创建项目

RNTesterPlayground.js

提供复现示例的最佳方式是为 React Native 提交 Pull Request,修改 RNTesterPlayground.js 文件。

技巧

这种方式会在 react-nativemain 分支运行你的代码,是我们 最快 调查修复错误的方法。

RNTesterPlayground.js 文件位于 RN-Tester 应用内,这是我们的参考应用。你可以在其专属 README 文件中了解其工作原理和构建方式。

此类重现器的示例请参见:修复模态布局问题 #50704

编辑 RNTesterPlayground.js 文件后,您可以在 RNTester 的 Playground 标签页中看到代码运行效果:

第一步

Expo Snack

对于大多数与 UI 相关的错误,您可以使用 Expo Snack 来重现。

通过 Expo Snack,您可以直接在浏览器中运行 React Native 代码并实时查看渲染效果。

当您在 Expo Snack 中成功重现问题后,点击 保存 按钮获取可分享的链接,将其附加到问题报告中。

重现器模板

对于大多数与构建/升级相关的错误,您应使用社区重现器模板来重现问题。

该模板创建了一个使用 React Native Community CLI 运行的小型项目,专门用于展示构建问题。

模板已预置 GitHub Actions CI 配置,可帮助识别您可能遇到的构建问题。

使用此模板的步骤:

  1. 在 GitHub 点击使用此模板按钮创建新项目

  2. 将新创建的仓库克隆到本地环境

  3. 应用必要的修改以重现您的问题

  4. 将您的仓库链接附加到新建的问题报告中