跳过主内容

如何报告错误

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

在提交新错误之前,请先在我们的问题跟踪器中搜索该错误是否已存在。大多数情况下,这是找到解决方案最快的方式,因为可能其他人也遇到过同样的问题。

如果在问题跟踪器中找不到您的错误,您可以提交一个新的。创建新问题后,请确保您

  • 添加问题的描述。
  • 遵循问题模板上的说明。
  • 添加您正在使用的 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 选项卡中看到您的代码运行。

Step one

Expo Snack

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

使用 Expo Snack,您可以在浏览器中运行 React Native 代码,并立即看到其渲染效果。

一旦您能够在 Expo Snack 中重现您的问题,点击保存按钮即可获取一个可分享的链接,将其附加到您的错误报告中。

复现器模板

而对于大多数与构建相关的错误,您应该使用 社区复现器模板 来重现它们。

此模板创建一个小型项目,该项目通过 React Native Community CLI 运行,可用于展示构建问题。

此模板还自带已使用 GitHub Actions 设置好的 CI,这将有助于发现您可能遇到的任何构建问题。

要使用此模板

  1. 点击 GitHub 上的 使用此模板 按钮,从该模板创建一个新项目。
  2. 将您新创建的仓库克隆到本地。
  3. 应用修改以重现您的问题。
  4. 将您的仓库链接附加到您正在创建的新错误报告中。