デバッグランタイムに関する問題
このページでは、アプリが正常にビルドされてもランタイムの実行時に失敗する場合に、よくある問題を解決するために役立つ情報を提供します。特定の問題の解決策がここで見つからない場合は、開発者フォーラムに問題を投稿して追加のサポートを受けることができます。
起動時にJSバンドルエラーでアプリがクラッシュする
原因: システムのJSバンドルで競合が発生しています。アプリは、デバイスにもvlcm listの出力にも表示されません。「Requiring unknown module」または「Property __d doesn't exist」というエラーが表示されます。
解決策:
-
デバイスログをキャプチャします。
vega device start-log-stream --device <デバイス名> -
以下のいずれかのコマンドを使用してアプリを起動します。
- Kepler CLIを使用する場合:
react-native run-vega - package.jsonのNPMスクリプトを使用する場合:
npm run start:vega
- 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」エラーのサンプル:
E Volta:[KeplerScript-Native] Exception occurred in MessageQueue::runAsync: [Property '__d' doesn't exist ReferenceError: Property '__d' doesn't exist at global -
これらのエラーが表示された場合は、システムのJSバンドルを無効にしてアプリを再ビルドします。
react-native build-vega --use-system-js-bundles false
アプリは正常にビルドされるがデバイスに表示されない
原因: アプリがバックグラウンドで実行されているか、UIのレンダリングに問題があります。
解決策:
-
現在フォアグラウンドで動作しているアプリを確認します。
vlcm list - アプリがバックグラウンドにある場合は、フォアグラウンドに移行させます。
vlcm trigger-app foreground -i <インスタンスID> - バックグラウンドとフォアグラウンドを切り替えて更新します。
vlcm trigger-app background -i <インスタンスID> vlcm trigger-app foreground -i <インスタンスID>
アプリをフォアグラウンドにしても表示されない
原因: Metroサーバーで複数のアプリが実行されているか、UIコードにエラーがあります。Metroサーバーを使用できるのは一度に1つのアプリのみです。
解決策:
実行中の複数のアプリをチェックする:
-
Metroサーバーが実行されているターミナルで、Ctrl+Cキーを押してMetroサーバーを終了します。
- アプリを停止します。
vega device terminate-app - アプリを再起動します。
vega device launch-app
UIコードのエラーを確認する:
- Metroサーバーの出力をモニタリングしてエラーを調べます。
- 互換性のないReact Nativeパッケージが原因で発生する問題を探します。
- Metroサーバーは、エラーが発生するに従ってエラーを表示します。
- コード内でエラーを修正します。
- Metroサーバーは、変更のたびにバンドルを自動的に再ビルドします。
- エラーを修正すると、Metroサーバーによってバンドルが作成されます。
「開いているファイルが多すぎる」というエラーでビルドが失敗する
原因: これはWatchmanファイル監視システムの既知の問題で、Mac M1ユーザーに影響があります。WatchmanはMetroバンドラーによって使用されます。
解決策: Watchmanを再インストールします。
brew reinstall watchman
watchman shutdown-server; watchman watch-del-all; watchman
Metroサーバーが起動に失敗する、または頻繁にクラッシュする
原因: ポートが競合しているか、キャッシュが壊れているか、システムリソースに制約があります。
解決策:
- Metroキャッシュを消去します。
npx react-native start --reset-cache - ポートが競合していないかどうかを確認し、別のポートを使用します。
npx react-native start --port 8082 - 詳細ログを有効にしてMetroサーバーを再起動します。
npx react-native start --verbose - 問題が解決しない場合は、開発コンピューターを再起動してシステムリソースをクリアします。
関連トピック
Last updated: 2025年9月30日

