• /
  • 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.