---
title: "Soluciona el error Script error que oculta su mensaje, archivo y línea"
description: "Script error. con línea 0 y sin pila significa que el navegador ocultó un error de un script de otro origen. Añade crossorigin y una cabecera CORS para recuperar el mensaje."
canonical: "https://logbrew.co/es/errors/script-error"
last_updated: "2026-11-10"
---

# Soluciona el error Script error que oculta su mensaje, archivo y línea

`Script error.` con línea 0 y sin pila significa que el navegador ocultó un error de un script de otro origen. Añade `crossorigin` y una cabecera CORS para recuperar el mensaje.

Probado el 10 de noviembre de 2026 con Chromium 152, @logbrew/browser 0.1.21 y @logbrew/sdk 0.1.44

Por [Furkan Erday](https://github.com/furkanerday). Furkan Erday es el fundador de LogBrew. Desarrolla LogBrew con Claude Code y Codex todos los días.

Canonical: https://logbrew.co/es/errors/script-error

## Lo que la página sabe de un script que lanza un error

| Cómo se carga el script | El script se ejecutó | Detalles del error |
| --- | --- | --- |
| Desde el propio origen de la página | Se ejecutó | Completos |
| Desde otro origen | Se ejecutó | `Script error.` |
| Otro origen, `crossorigin` y la cabecera CORS | Se ejecutó | Completos |
| Otro origen, `crossorigin` y sin cabecera | Bloqueado | Ninguno |

1 script, cargado de 4 formas. Completos significa el mensaje, el archivo, la línea 1, la columna 7 y la pila, leídos del evento `error` en `window`.

## Recupera el error completo

### Carga el script con el atributo crossorigin

El atributo le dice al navegador que obtenga el archivo con CORS. Cuando el servidor lo permite, el navegador pasa el mensaje real, el archivo, la línea y la pila a los listeners de error de la página.

```bash
<script src="https://cdn.example.com/app.js" crossorigin="anonymous"></script>
```

### Envía la cabecera CORS desde el servidor del archivo

El servidor que aloja el script debe responder con `Access-Control-Allow-Origin` puesta en el origen de tu página, o `*` para un archivo público. En nuestra prueba, solo esa cabecera convirtió `Script error.` en el mensaje completo.

```bash
Access-Control-Allow-Origin: *
```

### Comprueba que el archivo sigue cargando

Con `crossorigin` puesto y sin cabecera, el navegador bloquea el archivo y el script nunca se ejecuta. La consola muestra entonces `blocked by CORS policy` y `net::ERR_FAILED`, y el elemento `script` dispara su evento `error`.

Salida

```text
Access to script at 'http://127.0.0.1:4874/plain/throws.js?scenario=script-cross-origin-attr-no-header' from origin 'http://127.0.0.1:4873' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource.
Failed to load resource: net::ERR_FAILED
```

### O sirve el script desde tu propio origen

Un script del propio origen de la página nunca silencia sus errores. Empaqueta el archivo con tu app, o pásalo por un proxy en tu dominio, y no hace falta cabecera.

## Gestiona los errores silenciados que aún recibes

### Cuéntalos y luego busca el script

`Script error.` no trae nada que solucionar. Cada uno significa que un script de otro origen lanzó un error. Busca las etiquetas sin `crossorigin` y empieza por las que cargan en todas las páginas.

### Lee el mensaje real en la consola

El navegador imprime el error completo en la consola aunque lo silencie para tus listeners. En nuestra prueba la consola mostró `Uncaught Error: Keg is empty` mientras `window.onerror` recibió `Script error.`.

### Decide qué hacer con las etiquetas de terceros

Un widget de chat o una etiqueta de analítica sin cabecera CORS te deja 2 opciones. Déjala como está y acepta errores silenciados, o añade `crossorigin` para que una cabecera ausente bloquee la etiqueta y aparezca como una carga fallida.

## Lo que vimos al probarlo

Pusimos 1 script que lanza un error, `throw new Error("Keg is empty: no beer left for order 42");`, en 2 servidores locales. La página corrió en `http://127.0.0.1:4873` en Chromium 152 con `@logbrew/browser` 0.1.21 instalado, y un segundo servidor en `http://127.0.0.1:4874` hizo de CDN. Cargamos el script de 4 formas y leímos el evento `error` en `window` cada vez.

Desde el propio origen de la página, el evento traía `Uncaught Error: Keg is empty: no beer left for order 42`, el archivo `/throws.js`, la línea 1, la columna 7 y un objeto `Error` con pila. Desde el otro origen sin `crossorigin`, el evento traía `Script error.`, un nombre de archivo vacío, línea 0, columna 0 y ningún objeto `Error`. La consola imprimió igualmente el mensaje completo.

Con `crossorigin="anonymous"` y `Access-Control-Allow-Origin: *` en el CDN, el evento volvió a traer todos los detalles. Con el atributo y sin cabecera, el navegador bloqueó el archivo, el script nunca se ejecutó y el elemento `script` disparó su evento `error`.

## Por qué el navegador oculta el mensaje

El estándar HTML silencia los errores de los scripts que la página obtuvo de otros orígenes sin CORS. Su algoritmo marca los errores como silenciados cuando la respuesta fue CORS-cross-origin, y luego reporta el error como `Script error.` sin URL, con línea 0, columna 0 y sin objeto de error.

El navegador trata el texto del error de un script cross-origin como datos de ese script, así que la página no recibe nada. La página de MDN sobre `crossorigin` dice lo mismo en 1 línea. El acceso al registro de errores mediante `window.onerror` está limitado para esos scripts.

whatwg/html#2440 pidió una forma de obtener los detalles sin CORS. Se cerró en julio de 2024, el mismo día en que se abrió whatwg/html#10514 para reportar que los navegadores no silencian los mismos casos de la misma forma. Ese reporte sigue abierto.

## Lo que LogBrew registra

Con los detalles completos, el SDK de navegador envió 1 incidencia llamada `Browser error: Error` con un frame de pila para `/throws.js` en la línea 1, columna 7, la ruta del código fuente y la clave de agrupación `browser.error:Error:/throws.js`. Cada script que lanza un error recibe su propia incidencia.

Con el error silenciado, la incidencia tenía el mismo nombre, sin frames de pila, línea 0, columna 0 y la clave de agrupación `browser.error:Error`. Los errores silenciados comparten esa 1 incidencia, así que su contador te dice cuántos errores aún no puedes ver.

Ambos eventos traían la ruta de la página, el runtime `Chromium 152` en `macOS` y un breadcrumb `page_view`. Ninguno traía el texto del mensaje. El SDK lo marcó como `redacted`.

## Preguntas frecuentes

### ¿Qué significa Script error. en JavaScript?

Un script de otro origen lanzó un error y el navegador ocultó los detalles a la página porque el archivo no se cargó con CORS. El script en sí se ejecutó.

### ¿Por qué Script error. tiene línea 0 y no tiene pila?

El estándar HTML reemplaza el mensaje, el archivo, la línea, la columna y el objeto de error cuando silencia un error. Solo queda la cadena `Script error.`.

### ¿Script error. significa que el script no cargó?

No. Un script que no carga dispara el evento `error` en su elemento `script` y nunca se ejecuta. `Script error.` significa que el script se ejecutó y lanzó un error.

### ¿Puedo ver el mensaje sin cambiar el servidor?

En la consola del navegador, sí. En tu seguimiento de errores, no. La página necesita `crossorigin` en la etiqueta y la cabecera CORS del servidor, o el script en tu propio origen.

### ¿Debería filtrar Script error. de mi seguimiento de errores?

Mejor cuéntalo. El número te dice cuántos errores no puedes ver, y baja a 0 cuando cada script cross-origin carga con CORS.

## Cuenta los errores que aún no puedes ver

El SDK de navegador de LogBrew guarda cada error silenciado en 1 incidencia y da a cada error real su archivo, línea y pila. Empieza con el generoso plan gratuito, sin tarjeta.

[Empezar gratis](https://logbrew.co/es)

## Fuentes

- [MDN, Window: error event](https://developer.mozilla.org/en-US/docs/Web/API/Window/error_event)
- [MDN, crossorigin attribute](https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Attributes/crossorigin)
- [HTML Standard, Runtime script errors](https://html.spec.whatwg.org/multipage/webappapis.html#runtime-script-errors)
- [whatwg/html#2440](https://github.com/whatwg/html/issues/2440)
- [whatwg/html#10514](https://github.com/whatwg/html/issues/10514)

## Más soluciones a errores de JavaScript

- [Soluciona el error Failed to fetch y distingue sus 3 causas](https://logbrew.co/es/errors/failed-to-fetch)
- [Errores de JavaScript que reproducimos, y cómo solucionar cada uno](https://logbrew.co/es/errors)
