このページを使用して、React NativeのソースマップのアップロードおよびMobileJSErrorのシンボル化のトラブルシューティングを行ってください。ソースマップのアップロード方法については、「React NativeのJavaScriptエラーレポート」をご覧ください。
トラブルシューティング
UIのソースマップエラー
UIに以下のいずれかのエラーが表示される場合、ソースマップファイルにsourcesContent属性が欠落しているか、アップロード時に送信されたメタデータ(sourcemapName、jsBundleId、またはappVersion)が、そのビルドについてアプリが報告する値と一致していません:
Source map not found.Source map missing.Incorrect map detected.Incorrect and missing maps detected.
まず、アップロードに使用されたsourcemapName、jsBundleId、およびappVersionが、そのビルドについてアプリが報告する値と一致していることを確認してください(行番号が一致しないのはなぜですか?を参照してください)。メタデータが一致する場合、New Relicがスタックトレースのミニファイを解除できるように、ソースマップにsourcesContent属性が含まれている必要があります。この属性が含まれるようにソースマップを再生成し、再度アップロードしてください。ほとんどのバンドラーは、includeSources(またはビルドツールでの同等のオプション)などのオプションを有効にすると、元のソースコンテンツを含めます。
React NativeアプリがあるのにUIにReact Nativeメニュー項目が表示されない場合は、更新されたエージェントバージョンを使用していること、およびアプリがデータを送信していることを確認してください。アプリがReact Nativeプラットフォームのタグが付けられたデータを送信するまで、メニュー項目は表示されません。
MobileJSErrorと処理された例外イベントの両方が表示されません。
新しいエージェントバージョンでは、同じJavaScriptエラーに対してMobileJSErrorイベントと処理された例外イベントの両方が表示されることはありません。代わりに、JavaScriptエラーはMobileJSErrorイベントとして記録されます。
New Relicは現在、React NativeのMobileJSErrorのみをサポートしています。CapacitorおよびCordovaはサポートされていません。
よくあるご質問
はい。gzipまたはzip圧縮された(.zip)ソースマップをアップロードできます。ビルドスクリプトは、アップロード前にサイズの大きい.mapファイルを自動的にzip圧縮します。
解凍後200 MB。New Relicは、シンボリケーションのために解凍後200 MBを超えるソースマップを保存しません。代わりにビルドテレメトリーを送信します。詳細については、ファイルサイズの制限を参照してください。
コードスニペットには、ソースマップにsourcesContent属性が必要です。ソースマップに元のソースコンテンツが含まれていない場合でも、New Relicは行と列のマッピングを使用してスタックトレースのミニファイを解除できますが、周囲のソースコードを表示することはできません。includeSourcesなどのオプション(またはビルドツールの同等のオプション)を有効にしてソースマップを再生成し、再度アップロードしてください。
アップロードされたソースマップが、エラーを生成したJavaScriptバンドルと正確に対応していない場合、行番号は一致しません。アップロードに使用した jsBundleId と appVersion が、アプリがそのビルドに対して報告する値と一致していることを確認してください — これは、JavaScriptバンドルがネイティブバイナリバージョンから分岐する、CodePushやその他のover-the-air(OTA)アップデートの後に特に重要です。また、ソースマップがバージョン3であることも確認してください。
一般的な原因としては次のものがあります:
- ソースマップに
sourcesContent属性が欠落しています(UIのソースマップエラーを参照してください)。 - アップロードと実行中のアプリ間で
jsBundleIdまたはappVersionが一致しません(行番号が一致しないのはなぜですか?を参照してください)。 - ソースマップが200 MBの制限を超えたため、New Relicはビルドテレメトリーのみを送信しました。
- データの同期はまだ完了していません。アップロード後、データが利用可能になるまで数分かかる場合があります。
- ソースマップのAPIキーとアプリケーショントークンは、異なるNew Relicアカウントに属しています。
いいえ。New RelicのReact Nativeシンボリケーションは、Metroのデフォルト(非マルチバンドル)シンボリケーターに合わせて、単一のソースマップファイルのみをサポートします。アプリがJavaScriptを複数のバンドルに分割し、複数のソースマップを生成する場合、New Relicはその設定のシンボリケーションをサポートしません。
これが影響している場合は、New Relicサポートに連絡するか、機能リクエストを提出して、マルチバンドルサポートをリクエストしてください。