• /
  • EnglishEspañolFrançais日本語한국어Português
  • ログイン今すぐ開始

この機械翻訳は、参考として提供されています。

英語版と翻訳版に矛盾がある場合は、英語版が優先されます。詳細については、このページを参照してください。

問題を作成する

React NativeのJavaScriptエラーレポート

|View as Markdown (English)

デフォルトでは、New Relic React NativeエージェントはJavaScriptエラーと未処理のPromise拒否をキャプチャし、それらをMobileJSErrorイベントとして報告します。これらのエラーはUIで表示し、NRQLでクエリを実行して、ダッシュボードにグラフ化できます。

MobileJSErrorイベントのスタックトレースを人間が読める形式にするには、アプリで実行されているJavaScriptバンドルに対応するソースマップがエージェントに必要です。New RelicユーザーAPIキーとアプリケーショントークンを正しく設定すると、各ビルドの後にエージェントがソースマップを自動的にアップロードします。自動的にアップロードできない場合、またはCodePushやその他のover-the-air(OTA)サービスを使用してJavaScriptのみの更新を配信する場合は、ソースマップを手動でアップロードできます。

重要

ソースマップのアップロードでは、アプリケーショントークンに加えてユーザーAPIキーを使用します。アプリケーショントークンはアプリを識別しますが、特定のユーザーを認証するものではないため、それ単独でアップロードを安全に承認することはできません。ユーザーAPIキーは、リクエストを認証済みのNew Relicユーザーに結び付けます。これにより、(機密性の低い)アプリケーショントークンしか持たない人がソースマップをアップロードしたり上書きしたりするのを防ぎます。ユーザーAPIキーとアプリケーショントークンは、同じNew Relicアカウントに属している必要があります。

ヒント

JavaScriptエラーレポートはデフォルトで有効になっています。MobileJSErrorイベントの記録を完全に無効にするには、jsErrorReportingEnabled設定falseに設定します。

ソースマップの自動アップロードを設定します。

ソースマップを自動的にアップロードするには、New RelicユーザーAPIキーとアプリケーショントークンを指定してください。React Nativeアプリはプラットフォームごとに個別にビルドされるため、AndroidとiOSではキーの設定が異なります。リリースするプラットフォームごとに設定してください。

始める前に、同じNew Relicアカウントから以下を取得してください:

Android

プロジェクトのnewrelic.propertiesファイルにユーザーAPIキーを追加します:

com.newrelic.api_key=<YOUR_USER_API_KEY>

<YOUR_USER_API_KEY>をユーザーAPIキーに置き換えてください。エージェントはNewRelic.startAgent()からアプリケーショントークンをすでに認識しています。両方の値が有効な場合、各リリースビルドの後にエージェントがAndroidソースマップを生成し、New Relicに自動的にアップロードします。

ヒント

デフォルトでは、自動アップロードはリリースビルドに対してのみ実行されます。デバッグビルドでもソースマップの自動アップロードを行うには、New Relic Gradleプラグインの設定uploadMapsForVariant設定にDebugを追加してください(例:uploadMapsForVariant("Release", "Debug"))。それ以外の場合は、デバッグビルドのソースマップを手動でアップロードしてください

iOS

iOSでは、dsym-upload-toolsフォルダー — dSYMのアップロードに使用されるのと同じフォルダー — に含まれるビルドフェーズ・スクリプト(upload-react-native-sourcemap)がソースマップをアップロードします。ユーザーAPIキーとアプリケーション・トークンを引数としてそのスクリプトに渡します。

  1. dSYMのアップロードをまだ設定していない場合は、dsym-upload-toolsフォルダーをプロジェクトのSRCROOT(通常はiosフォルダー)にコピーしてください。

  2. Xcodeでターゲットを選択し、Build Phasesタブを開いて、New Run Script Build Phaseを追加します。ドラッグして、"Bundle React Native code and images"フェーズの後に実行されるようにします。

  3. プレースホルダーをユーザーAPIキーとアプリケーショントークンに置き換えて、実行スクリプトに以下を追加します:

    bash
    $
    ARTIFACT_DIR="${BUILD_DIR%Build/*}"
    $
    SCRIPT=`/usr/bin/find "${SRCROOT}" "${ARTIFACT_DIR}" -type f -name upload-react-native-sourcemap | head -n 1`
    $
    /bin/sh "${SCRIPT}" "YOUR_USER_API_KEY" "YOUR_APP_TOKEN"

ヒント

資格情報をバージョン管理にコミットしないでください。ユーザーAPIキーとアプリケーショントークンを.xcconfigファイルまたはCI/CDシステムのシークレットに保存し、実行スクリプト(たとえば、"${NR_USER_API_KEY}" "${NR_APP_TOKEN}")でそれらを参照してください。詳細な出力をupload_sourcemap_results.logに書き込むには、3番目の引数として--debugを追加してください。

iOSスクリプトはReleaseビルドに対してのみ実行され、シミュレータービルドはスキップされます。いずれかの値が欠落しているか無効な場合、エージェントはソースマップをアップロードせず、JavaScriptエラーのスタックトレースはシンボル化されないままになります。その場合は、ソースマップを手動でアップロードしてください

ソースマップを手動でアップロード

ソースマップをNew Relicシンボル取り込みAPIに直接アップロードできます。これは、自動アップロードが不可能な場合や、CodePushなどのOTAサービスを通じてJavaScriptのみのアップデートをリリースする場合に便利です。

次のcURLテンプレートを使用します:

bash
$
curl -X POST "https://symbol-ingest-api.service.newrelic.com/v1/react-native/sourcemaps" \
>
-H "Api-Key: $NR_USER_API_KEY" \
>
-H "X-APP-LICENSE-KEY: $NR_APP_TOKEN" \
>
-F "sourcemap=@./index.android.bundle.map" \
>
-F "jsBundleId=<JS_BUNDLE_ID>" \
>
-F "appVersion=1.0.5" \
>
-F "sourcemapName=index.android.bundle.map"

以下を置き換えます:

  • $NR_USER_API_KEY は有効なNew RelicユーザーAPIキーです。
  • $NR_APP_TOKEN モバイル監視アプリケーショントークンです。
  • <JS_BUNDLE_ID> は、JavaScriptセッションに対してエージェントによって報告される一意のビルド識別子です(「jsBundleIdの取得」を参照してください)。
  • appVersion バンドルがターゲットとするネイティブアプリケーションのバージョンです(たとえば、1.0.5)。

ヒント

New RelicのEUデータセンターのアカウントの場合は、代わりにEUエンドポイントを使用してください:https://symbol-ingest-api.service.eu.newrelic.com/v1/react-native/sourcemaps

New Relicの日本データセンターのアカウントの場合は、代わりに日本のエンドポイントを使用してください:https://symbol-ingest-api.service.jp.newrelic.com/v1/react-native/sourcemaps

アップロードAPIのリファレンス

終点

プロパティ

価値

方法

POST

URL

https://symbol-ingest-api.service.newrelic.com/v1/react-native/sourcemaps

コンテンツタイプ

multipart/form-data

ヘッダー

ヘッダー

必須

説明

Api-Key

はい

有効なNew Relic

ユーザーAPIキー

。アプリケーショントークンと同じアカウントに属している必要があります。

X-APP-LICENSE-KEY

はい

モバイルアプリのアプリケーショントークン。

X-Telemetry-Data

いいえ

バンドラー、ソースマップ名、およびサイズに関するテレメトリー情報です。解凍後のソースマップが200 MBを超える場合、エージェントはファイルを送信せず、代わりにこのヘッダーのみを送信します。

Content-Type

はい

multipart/form-data

である必要があります。

リクエスト本文(マルチパートフォームデータ)

フィールド

タイプ

必須

説明

sourcemap

ファイル

いいえ

ソースマップファイル(

.map

または

.bundle

)。gzip圧縮が可能です。解凍後最大200 MB(

ファイルサイズの制限

を参照してください)。

sourcemapName

いいえ

ソースマップファイルの名前です。最大255文字。

jsBundleId

はい

一意のビルド識別子(SHAやIDなど)。最大255文字。

appVersion

はい

アプリケーションバージョン(たとえば、

1.5.2

)。最大255文字。

重要

解凍後のソースマップファイルが200 MBを超える場合、エージェントはファイルを送信しません。代わりにX-Telemetry-Dataヘッダーを送信するため、New Relicはビルドが発生したことを引き続き追跡できます。詳細については、ファイルサイズの制限をご覧ください。

レスポンス

応答にはContent-Type: application/jsonを使用します。

HTTPステータス

説明

201 Created

アップロードが成功しました。レスポンス本文には、ソースマップのメタデータが含まれています:

{
"sourcemapMetaData": {
"entityGuid": "<SOURCEMAP_ENTITY_GUID>",
"accountId": "<YOUR_ACCOUNT_ID>",
"applicationId": "<YOUR_APPLICATION_ID>",
"sourcemapName": "app.min.js.map",
"appVersion": "12424",
"JSBundleId": "87124712",
"createdAt": "2025-11-27T10:32:44.586Z"
}
}

400 Bad Request

フィールドの欠落、ファイル内の無効なJSONスキーマ、不正なリクエストなどにより、検証に失敗しました。例:

{"message": "Validation failed: Source map version must be 3."}

401 Unauthorized

APIキーは有効ですが、

X-APP-LICENSE-KEY

は別のアカウントに属しています(クロスアカウント保護)。例:

{"message": "User not authorized"}

403 Forbidden

Api-Key

には必要な機能がありません。ユーザーAPIキーが、モバイルエンティティの表示権限を持つユーザーに属していることを確認してください。例:

{"message": "User not authorized"}

404 Not Found

ヘッダーで提供されたアプリケーショントークンが存在しません。例:

{"message": "applicationToken is invalid"}

413 Payload Too Large

解凍されたソースマップファイルが200 MBを超えています。例:

{"message": "File too large. Max size is currently 200 MiB"}

500 Internal Server Error

サーバー側で一般的な回復不能なエラーが発生しました。例:

{"message": "Unexpected error occured during upload process because of {error}"}

CodePushおよびOTAアップデート用のソースマップをアップロード

CodePushまたは別のOTAアップデートサービスを使用する場合、JavaScriptバンドルのバージョンはネイティブバイナリのバージョンと異なります。JavaScriptのアップデートをプッシュするたびに、新しいソースマップをアップロードして、New RelicでMobileJSErrorイベントを引き続き読み取れるようにします。

OTAアップデートをシンボリケートするには、アップロードで以下を使用する必要があります:

  • JavaScriptセッション中にエージェントが報告するIDと一致する一意のjsBundleId
  • バンドルがターゲットとするネイティブバージョンである、正しいappVersion

CI/CDパイプラインのスクリプトを使用するか、cURLを使用して手動でソースマップをアップロードできます。

方法1:スクリプトによる自動アップロード

New Relicは、appcenter codepush release-reactコマンドの直後にCI/CDパイプラインで実行できるNode.jsヘルパースクリプトを提供しています。

bash
$
# Example integration
$
appcenter codepush release-react -a <Owner>/<App>
$
node upload-nr-sourcemap.js --bundle android/index.android.bundle --map android/index.android.bundle.map --bundleId <NEW_ID>

方法2:cURLを使用した手動アップロード

スクリプトを使用しない場合は、cURLを使用してソースマップ(解凍済みまたは圧縮済み)をシンボル取り込みAPIにアップロードします:

bash
$
curl -X POST "https://symbol-ingest-api.service.newrelic.com/v1/react-native/sourcemaps" \
>
-H "Api-Key: $NR_USER_API_KEY" \
>
-H "X-APP-LICENSE-KEY: $NR_APP_TOKEN" \
>
-F "sourcemap=@./index.android.bundle.map" \
>
-F "jsBundleId=CODE_PUSH_ID_HERE" \
>
-F "appVersion=1.0.5" \
>
-F "sourcemapName=index.android.bundle.map"

ヘッダー、本文フィールド、およびレスポンスの完全なリストについては、アップロードAPIリファレンスを参照してください。

jsBundleIdを取得します。

アップロードに使用されるjsBundleIdは、エージェントがJavaScriptセッションについて報告するバンドルIDと一致する必要があります。CodePushリリースの場合は、アップロードされたソースマップがユーザーのアプリで実行されているバンドルにマッピングされるように、CodePushのデプロイメントまたはリリース識別子をjsBundleIdとして使用します。

ヒント

アップロードしたソースマップを検証、監査、または削除するには、「React Nativeソースマップのリストと削除」を参照してください。

ファイルサイズの制限

シンボリケーション用に保存するには、解凍後のソースマップファイルが200 MB未満である必要があります。

転送サイズを縮小するために、ビルドスクリプトはアップロード前に.mapファイルを自動的にgzip圧縮しますが、ビルドは解凍されたファイルに対して200 MBの制限を確認します。解凍された.mapファイルが200 MBを超える場合、エージェントはファイルをアップロードしないため、ビルドのタイムアウトや取り込みエラーを防ぐことができます。

これらの場合、スクリプトはファイルの代わりにビルドテレメトリー(メタデータ)を送信します。これにより、その特定のバージョンでシンボル化が利用できない場合でも、New Relicはビルドが発生したことを追跡できます。その結果、そのビルドのMobileJSErrorイベントには、シンボル化されていない(ミニファイされた)スタックトレースが表示されます。

解凍後のソースマップが200 MBより大きい場合は、New Relicサポートにお問い合わせいただくか、機能リクエストを送信してください。ご自身でこの制限を引き上げることはできません。

ソースマップのアップロードのトラブルシューティング

MobileJSErrorのスタックトレースがシンボル化されていない場合、ソースマップが解凍後のサイズ制限である200 MBを超えている可能性があります。以下の手順を使用して原因を確認し、サポートをリクエストしてください。その他のトラブルシューティングのヒントやよくある質問については、「React NativeのソースマップとJavaScriptエラーのトラブルシューティング」を参照してください。

ファイルまたはテレメトリーがアップロードされたかどうかを確認してください。

ビルドが成功したからといって、ファイルのアップロードが成功したとは限りません。ビルドスクリプトがSuccessメッセージで完了しても、解凍後のソースマップが200 MBより大きい場合は、コンソールログを確認してください。エージェントがソースマップファイルの代わりにテレメトリーを送信したことを示すメッセージが表示されます。

解凍後のファイルサイズを確認してください

ソースマップファイルのサイズを確認して、制限に近いか超えているかを検証してください:

bash
$
# Check the size of the unzipped source map
$
ls -lh index.android.bundle.map

ファイルが200 MBに近いかそれを超える場合、シンボル化のためにソースマップをアップロードすることはできません。

大規模なソースマップのサポートをリクエスト

解凍されたソースマップが200 MBの制限を超える場合、お客様側でサイズを縮小したり、ご自身で制限を引き上げたりする方法はありません。この制限の影響を受ける場合は、次の手順を実行してお知らせください:

Copyright © 2026 New Relic株式会社。

This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.