调试基础
调试功能,例如 Dev 菜单、LogBox 和 React Native DevTools 在发布(生产)版本中被禁用。
打开 Dev 菜单
React Native 提供了一个应用内开发者菜单,可以访问调试功能。你可以通过摇动设备或使用键盘快捷键访问 Dev 菜单
- iOS 模拟器:Ctrl + Cmd ⌘ + Z (或 设备 > 摇动)
- Android 模拟器:Cmd ⌘ + M (macOS) 或 Ctrl + M (Windows 和 Linux)
替代方法 (Android):adb shell input keyevent 82
。
打开 DevTools
React Native DevTools 是我们为 React Native 构建的内置调试器。它允许你检查和理解你的 JavaScript 代码是如何运行的,类似于 Web 浏览器。
要打开 DevTools,请执行以下操作之一
- 在 Dev 菜单中选择 “Open DevTools”。
- 从 CLI (
npx react-native start
) 按下 j。
首次启动时,DevTools 将打开一个欢迎面板,以及一个打开的控制台抽屉,你可以在其中查看日志并与 JavaScript 运行时进行交互。从窗口顶部,你可以导航到其他面板,包括集成的 React 组件检查器和性能分析器。
React Native DevTools 由 React Native 内置的专用调试架构驱动,并使用定制构建的 Chrome DevTools 前端。这使我们能够提供熟悉的、与浏览器对齐的调试功能,这些功能深度集成,并为端到端可靠性而构建。
在我们的 React Native DevTools 指南 中了解更多信息。
React Native DevTools 仅适用于 Hermes 引擎,并且需要安装 Google Chrome 或 Microsoft Edge。
Flipper 和替代调试工具
React Native DevTools 取代了之前的 Flipper、Experimental Debugger 和 Hermes 调试器 (Chrome) 前端。如果你使用的是旧版本的 React Native,请访问 你的版本 的文档。
我们继续提供传统的调试方法,例如直接 JSC 调试和远程 JS 调试(已弃用)(请参阅其他调试方法)。
React Native DevTools 旨在调试 React 应用程序问题,而不是取代原生工具。如果你想检查 React Native 的底层平台层(例如,在开发原生模块时),请使用 Xcode 和 Android Studio 中提供的调试工具(请参阅调试原生代码)。
其他有用的链接
LogBox
LogBox 是一个应用内工具,用于显示你的应用程序记录的警告或错误。
致命错误
当发生不可恢复的错误时,例如 JavaScript 语法错误,LogBox 将打开并显示错误位置。在这种状态下,LogBox 是不可关闭的,因为你的代码无法执行。一旦语法错误被修复(通过快速刷新或手动重新加载),LogBox 将自动关闭。
控制台错误和警告
控制台错误和警告显示为带有红色或黄色徽章的屏幕通知。
- 错误 将显示通知计数。点击通知以查看展开的视图,并翻阅其他日志。
- 警告 将显示一个没有详细信息的通知横幅,提示你打开 React Native DevTools。
当 React Native DevTools 打开时,除了致命错误之外的所有错误都将在 LogBox 中隐藏。我们建议使用 React Native DevTools 中的控制台面板作为真理之源,因为各种 LogBox 选项可以隐藏或调整某些日志的级别。
💡 忽略日志
LogBox 可以通过 LogBox
API 进行配置。
import {LogBox} from 'react-native';
忽略所有日志
可以使用 LogBox.ignoreAllLogs()
禁用 LogBox 通知。这在诸如产品演示等情况下可能很有用。
LogBox.ignoreAllLogs();
忽略特定日志
可以通过 LogBox.ignoreLogs()
在每个日志的基础上禁用通知。这对于嘈杂的警告或无法修复的警告(例如,在第三方依赖项中)可能很有用。
LogBox.ignoreLogs([
// Exact message
'Warning: componentWillReceiveProps has been renamed',
// Substring or regex match
/GraphQL error: .*/,
]);
LogBox 会将 React 中的某些错误视为警告,这意味着它们不会显示为应用内错误通知。高级用户可以通过使用 LogBoxData.setWarningFilter()
自定义 LogBox 的警告过滤器来更改此行为。
性能监视器
在 Android 和 iOS 上,可以通过在 Dev 菜单中选择 “Perf Monitor” 在开发期间切换应用内性能叠加层。在此处了解有关此功能的更多信息 here。
性能监视器在应用内运行,仅供参考。我们建议调查 Android Studio 和 Xcode 下的原生工具,以获得准确的性能测量结果。