• /
  • EnglishEspañolFrançais日本語한국어Português
  • Inicia sesiónComenzar ahora

Te ofrecemos esta traducción automática para facilitar la lectura.

En caso de que haya discrepancias entre la versión en inglés y la versión traducida, se entiende que prevalece la versión en inglés. Visita esta página para obtener más información.

Crea una propuesta

Reporte de errores de JavaScript de React Native

|View as Markdown (English)

De forma predeterminada, el agente de New Relic React Native captura errores de JavaScript y rechazos de promesas no controlados y los reporta como eventosMobileJSError . Puede ver estos errores en la UI, consultarlos con NRQL y graficarlos en dashboards.

Para que el rastreo del stack en los eventos de MobileJSError sea legible para los humanos, el agente necesita el mapa de origen que corresponde al paquete de JavaScript que se ejecuta en la aplicación. Cuando configura correctamente la clave de API de usuario de New Relic y el token de la aplicación, el agente carga el mapa de origen automáticamente después de cada compilación. Si no puede realizar la carga automáticamente, o si envía actualizaciones solo de JavaScript con CodePush u otro servicio inalámbrico (OTA), puede cargar los mapas de origen manualmente.

Importante

La carga del mapa de origen utiliza una clave de API de usuario además del token de la aplicación. El token de la aplicación identifica su aplicación, pero no autentica a un usuario específico, por lo que no puede autorizar de forma segura una carga por sí solo. La clave de API de usuario vincula la solicitud a un usuario autenticado de New Relic, lo que evita que cualquier persona que solo tenga el token de la aplicación (menos confidencial) cargue o sobrescriba sus mapas de origen. La clave de API de usuario y el token de la aplicación deben pertenecer a la misma cuenta de New Relic.

Sugerencia

El reporte de errores de JavaScript está habilitado de forma predeterminada. Establezca la opción de configuración jsErrorReportingEnabled en false para deshabilitar por completo el registro de eventos MobileJSError.

Configurar la carga automática de mapas de origen

Para cargar los source maps automáticamente, proporcione la clave de API de usuario de New Relic y el token de la aplicación. Debido a que una aplicación de React Native se compila por separado para cada plataforma, debe configurar la clave de manera diferente en Android e iOS. Configúrelo para cada plataforma que distribuya.

Antes de comenzar, obtenga lo siguiente de la misma cuenta de New Relic:

Android

Agregue su clave de API de usuario al archivo newrelic.properties en su proyecto:

com.newrelic.api_key=<YOUR_USER_API_KEY>

Reemplace <YOUR_USER_API_KEY> con la clave de API de usuario. El agente ya conoce el token de la aplicación de NewRelic.startAgent(). Cuando ambos valores son válidos, el agente genera y carga el mapa de origen de Android a New Relic automáticamente después de cada compilación de lanzamiento.

Sugerencia

La carga automática solo se ejecuta para las compilaciones de lanzamiento de forma predeterminada. Para obtener la carga automática de mapas de origen también para las compilaciones de depuración, agregue Debug al ajuste uploadMapsForVariant en la configuración del plug-in de New Relic Gradle, por ejemplo, uploadMapsForVariant("Release", "Debug"). De lo contrario, cargue el mapa de origen de la compilación de depuración manualmente.

iOS

En iOS, un script (upload-react-native-sourcemap) de fase de compilación incluido en la carpeta dsym-upload-tools —la misma carpeta utilizada para cargas de dSYM — sube el mapa de origen. Pase la clave de API de usuario y el token de aplicación como argumentos a ese script.

  1. Si aún no ha configurado las cargas de dSYM, copie la carpeta dsym-upload-tools en el SRCROOT del proyecto (generalmente la carpeta ios).

  2. En Xcode, seleccione su objetivo, abra la pestaña Build Phases y agregue un New Run Script Build Phase. Arrástrelo para que se ejecute después de la fase “Bundle React Native code and images”.

  3. Agregue lo siguiente al script de ejecución, reemplazando los marcadores de posición con la clave de API de usuario y el token de la aplicación:

    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"

Sugerencia

No confirme credenciales en el control de versiones. Almacene la clave de API del usuario y el token de la aplicación en un archivo .xcconfig o en los secretos del sistema CI/CD, y luego haga referencia a ellos en el script de ejecución (por ejemplo, "${NR_USER_API_KEY}" "${NR_APP_TOKEN}"). Agregue --debug como tercer argumento para escribir la salida detallada en upload_sourcemap_results.log.

El script de iOS se ejecuta solo para las compilaciones de Release y omite las compilaciones del simulador. Si falta alguno de los valores o no es válido, el agente no cargará el mapa de origen y los rastreos del stack de errores de JavaScript permanecerán sin simbolizar. En ese caso, cargue el mapa de origen manualmente.

Cargar manualmente un mapa de origen

Puede cargar un source map directamente en la API de ingesta de símbolos de New Relic. Esto es útil cuando la carga automática no es posible, o cuando lanza actualizaciones solo de JavaScript a través de CodePush u otros servicios OTA.

Utilice la siguiente plantilla de 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"

Reemplace lo siguiente:

  • $NR_USER_API_KEY es una clave de API de usuario de New Relic válida.
  • $NR_APP_TOKEN es su token de aplicación de monitoreo de móviles.
  • <JS_BUNDLE_ID> es el identificador de compilación único reportado por el agente para la sesión de JavaScript (consulte Retrieve the jsBundleId).
  • appVersion es la versión de la aplicación nativa que el paquete tiene como objetivo (por ejemplo, 1.0.5).

Sugerencia

Para las cuentas en el centro de datos de la UE de New Relic, use el extremo de la UE en su lugar: https://symbol-ingest-api.service.eu.newrelic.com/v1/react-native/sourcemaps.

Para las cuentas en el centro de datos de Japón de New Relic, use el extremo de Japón en su lugar: https://symbol-ingest-api.service.jp.newrelic.com/v1/react-native/sourcemaps.

Referencia de la API de carga

Extremo

Propiedad

Valor

Método

POST

URL

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

Content-Type

multipart/form-data

Encabezados

Encabezamiento

Requerido

Descripción

Api-Key

Una

clave de API de usuario

de New Relic válida. Debe pertenecer a la misma cuenta que el token de la aplicación.

X-APP-LICENSE-KEY

El token de aplicación para la aplicación móvil.

X-Telemetry-Data

No

Información de telemetría sobre el empaquetador, los nombres de los mapas de origen y los tamaños. Cuando un mapa de origen supera los 200 MB descomprimido, el agente no envía el archivo y, en su lugar, transmite solo este encabezado.

Content-Type

Debe ser

multipart/form-data

.

Cuerpo de la solicitud (datos de formulario multiparte)

Campo

Tipo

Requerido

Descripción

sourcemap

Archivo

No

El archivo de mapa de origen (

.map

o

.bundle

). Puede comprimirse con gzip. Máximo 200 MB sin comprimir (consulte

Limitaciones de tamaño de archivo

).

sourcemapName

Cadena

No

Nombre del archivo de mapa de origen. Máximo 255 caracteres.

jsBundleId

Cadena

Identificador de compilación único (por ejemplo, un SHA o ID). Máximo 255 caracteres.

appVersion

Cadena

Versión de la aplicación (por ejemplo,

1.5.2

). Máximo 255 caracteres.

Importante

Si el archivo de mapa de origen supera los 200 MB descomprimido, el agente no enviará el archivo. En su lugar, transmite el encabezado X-Telemetry-Data para que New Relic aún pueda rastrear que se produjo una compilación. Para obtener más detalles, consulte Limitaciones de tamaño de archivo.

Respuestas

Las respuestas utilizan Content-Type: application/json.

Estado HTTP

Descripción

201 Created

La carga se realizó correctamente. El cuerpo de la respuesta contiene los metadatos del source map:

{
"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

Error de validación, por ejemplo, campos faltantes, un esquema JSON no válido en el archivo o una solicitud mal formada. Ejemplo:

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

401 Unauthorized

La clave de API es válida, pero el

X-APP-LICENSE-KEY

pertenece a una cuenta diferente (protección entre cuentas). Ejemplo:

{"message": "User not authorized"}

403 Forbidden

El

Api-Key

no tiene la capacidad requerida. Asegúrese de que la clave de API de usuario pertenezca a un usuario con permisos de visualización de entidad móvil. Ejemplo:

{"message": "User not authorized"}

404 Not Found

El token de aplicación proporcionado en el encabezado no existe. Ejemplo:

{"message": "applicationToken is invalid"}

413 Payload Too Large

El archivo de mapa de origen descomprimido supera los 200 MB. Ejemplo:

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

500 Internal Server Error

Se produjo un error genérico e irrecuperable en el lado del servidor. Ejemplo:

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

Cargar mapas de origen para actualizaciones de CodePush y OTA

Cuando utiliza CodePush u otro servicio de actualización OTA, la versión del paquete de JavaScript difiere de la versión binaria nativa. Cada vez que envíe una actualización de JavaScript, cargue el nuevo mapa de origen para que los eventos MobileJSError sigan siendo legibles en New Relic.

Para simbolizar una actualización OTA, la carga debe utilizar:

  • Un jsBundleId único que coincide con el ID que informa el agente durante la sesión de JavaScript.
  • El appVersion correcto, que es la versión nativa que tiene como objetivo el paquete.

Puede cargar el mapa de origen con un script en el pipeline de CI/CD o manualmente con cURL.

Método 1: carga automatizada mediante script

New Relic proporciona un script auxiliar de Node.js que puede ejecutar en su pipeline de CI/CD inmediatamente después del comando appcenter codepush release-react.

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>

Método 2: carga manual a través de cURL

Si prefiere no usar el script, cargue el mapa de origen (descomprimido o comprimido) a la API de ingesta de símbolos con 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=CODE_PUSH_ID_HERE" \
>
-F "appVersion=1.0.5" \
>
-F "sourcemapName=index.android.bundle.map"

Para obtener la lista completa de encabezados, campos del cuerpo y respuestas, consulte la referencia de la API de carga.

Recuperar el jsBundleId

El jsBundleId utilizado para la carga debe coincidir con el ID del paquete que el agente reporta para la sesión de JavaScript. Para los lanzamientos de CodePush, utilice el despliegue de CodePush o el identificador de lanzamiento como jsBundleId para que el mapa de origen cargado se asigne al paquete que se ejecuta en las aplicaciones de los usuarios.

Sugerencia

Para verificar, auditar o eliminar los mapas de origen que ha cargado, consulte Listar y eliminar mapas de origen de React Native.

Limitaciones de tamaño de archivo

Los archivos de mapa de origen deben tener menos de 200 MB descomprimidos para almacenarse para la simbolización.

Nuestros scripts de compilación comprimen automáticamente en gzip el archivo .map antes de la carga para reducir el tamaño de transferencia, pero la compilación verifica el límite de 200 MB con el archivo descomprimido. Si el archivo .map descomprimido supera los 200 MB, el agente no carga el archivo, lo que evita tiempos de espera de compilación y errores de ingesta.

En estos casos, el script envía telemetría (metadatos) de compilación en lugar del archivo. Esto permite a New Relic rastrear que se produjo una compilación, aunque la simbolización no esté disponible para esa versión específica. Como resultado, los eventos MobileJSError para esa compilación muestran rastreos del stack no simbolizados (minificados).

Si el source map supera los 200 MB una vez descomprimido, comuníquese con el soporte de New Relic o envíe una solicitud de característica. No hay forma de aumentar este límite por su cuenta.

Solucionar problemas de carga de mapas de origen

Si sus rastreos del stack de MobileJSError no están simbolizados, es posible que su source map haya superado el límite de tamaño sin comprimir de 200 MB. Siga los siguientes pasos para confirmar la causa y solicitar ayuda. Para obtener más consejos de resolución de problemas y preguntas frecuentes, consulte Resolución de problemas de source maps de React Native y errores de JavaScript.

Confirmar si se cargó el archivo o la telemetría

Una compilación exitosa no siempre significa una carga de archivo exitosa. Si el script de compilación se completa con un mensaje Success pero el mapa de origen tiene más de 200 MB sin comprimir, revise los logs de la consola. Verá un mensaje que indica que el agente envió telemetría en lugar del archivo de mapa de origen.

Compruebe el tamaño del archivo descomprimido

Compruebe el tamaño del archivo de mapa de origen para verificar si está cerca o por encima del límite:

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

Si el archivo se acerca o supera los 200 MB, el mapa de origen no se puede cargar para la simbolización.

Solicitar soporte para mapas de origen grandes

Si el mapa de origen descomprimido supera el límite de 200 MB, no hay forma de reducirlo por su cuenta ni de aumentar el límite. Haga lo siguiente para informarnos que este límite le afecta:

Copyright © 2026 New Relic Inc.

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