跳到主要内容

如何报告错误

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

在开启新错误之前,请搜索该错误是否已存在于我们的问题跟踪器中。大多数情况下,这是找到响应的最快方式,因为其他人可能已经遇到过相同的问题。

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

  • 添加问题描述。
  • 遵循 问题模板 中的说明。
  • 添加您正在使用的 React Native 版本。
  • 添加 npx @react-native-community/cli info 命令的输出。
  • 如果适用,添加问题的截图和视频。

所有错误报告都应包含一个复现器:我们理解问题发生以及帮助我们调试所需的代码。

警告

由于我们收到的问题数量众多,复现器是强制性的。没有复现器的问题无法调查,很可能会被关闭。

提供复现器

复现器的目标是提供一种复现您错误的方式。没有复现器,我们将无法理解错误,也无法修复它。

复现器应该最小化:尽可能少地包含依赖项(理想情况下除了 react-native 之外没有其他依赖项),因为这将帮助我们更好地隔离错误。当 GitHub 上的某人要求提供复现器时,他们不是要求您提供所有源代码。

您需要创建一个最小的项目来复现您正在报告的相同崩溃/错误/问题。

这个过程至关重要,因为通常问题通过创建复现器而得到解决。通过创建复现器,可以更容易地理解问题是否与您的特定设置有关,或者它是否真的是 React Native 内部的错误。

由于 React Native 的流量很大,我们只接受以下其中一种作为有效的复现器

  1. 对于大多数错误:向我们发送一个拉取请求,其中包含已编辑的 RNTesterPlayground.js 以复现您的错误。
  2. 如果您的错误与 UI 相关:一个 Snack
  3. 如果您的错误与构建/升级相关:一个使用我们的 复现器模板 的项目。

RNTesterPlayground.js

您提供复现器的最佳方式是针对 React Native 开启一个拉取请求,编辑 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. 将您的仓库链接附加到您正在创建的新错误报告中。