调试运行时问题
此页面可帮助您解决应用成功构建但在运行时执行期间失败时的常见问题。如果您在此处找不到特定问题的解决方案,请在开发者论坛中发布问题以获得更多支持。
应用在启动时因JS Bundle错误而崩溃
原因: 系统中的JS Bundle会导致冲突。您的应用不会出现在设备上或vlcm list输出中。您会看到“Requiring unknown module”(需要未知模块)或“Property __d doesn't exist”(属性__d不存在)错误。
解决方案:
-
捕获设备日志:
kepler device start-log-stream --device <设备名称> -
使用以下命令之一启动您的应用:
- 如果使用Kepler CLI:
react-native run-kepler - 如果在package.json中使用NPM脚本::
npm run start:kepler
- 如果使用Kepler CLI:
-
监控日志流中是否存在错误模式:
“Requiring unknown module”(需要未知模块)错误示例:
Uncaught Error: Requiring unknown module "2827612701754778". If you are sure the module exists, try restarting Metro.“Property __d doesn't exist”(属性__d不存在)错误示例:
E Volta:[KeplerScript-Native] Exception occurred in MessageQueue::runAsync: [Property '__d' doesn't exist ReferenceError: Property '__d' doesn't exist at global -
如果您看到这些错误,请在系统中禁用JS Bundle的情况下重建应用:
react-native build-kepler --use-system-js-bundles false
应用成功构建,但在设备上不可见
原因: 应用在后台运行或存在用户界面渲染问题。
解决方案:
-
检查哪个应用当前处于前台:
vlcm list - 如果您的应用处于后台,请将其置于前台:
vlcm trigger-app foreground -i <实例ID> - 在后台和前台之间切换以重新刷新:
vlcm trigger-app background -i <实例ID> vlcm trigger-app foreground -i <实例ID>
将应用置于前台后应用仍不可见
原因: Metro服务器有多个应用在运行或用户界面代码错误。一次只能有一个应用使用Metro服务器。
解决方案:
检查是否有多个正在运行的应用:
-
在运行Metro服务器的终端中按Ctrl+C以将其关闭。
- 停止应用:
kepler device terminate-app - 重启应用:
kepler device launch-app
检查用户界面代码错误:
- 监控Metro服务器输出中是否存在错误:
- 查找由不兼容的React Native程序包引起的问题
- Metro服务器会在发生错误时显示错误
- 修复代码中的错误:
- 每次更改后,Metro服务器都会自动重建Bundle
- 修复错误后,Metro服务器会创建一个Bundle
Metro服务器无法启动或经常崩溃
原因: 端口冲突、缓存损坏或系统资源限制。
解决方案:
- 清除Metro缓存:
npx react-native start --reset-cache - 检查端口冲突并使用其他端口:
npx react-native start --port 8082 - 使用详细日志记录重新启动Metro服务器:
npx react-native start --verbose - 如果问题仍然存在,请重新启动开发计算机以清除系统资源。
相关主题
Last updated: 2025年10月31日

