---
title: "Risolvi l’errore di script che nasconde messaggio, file e riga"
description: "Script error. con riga 0 e nessuno stack significa che il browser ha nascosto un errore di uno script su un’altra origine. Aggiungi crossorigin e un header CORS per riavere il messaggio."
canonical: "https://logbrew.co/it/errors/script-error"
last_updated: "2026-11-10"
---

# Risolvi l’errore di script che nasconde messaggio, file e riga

`Script error.` con riga 0 e nessuno stack significa che il browser ha nascosto un errore di uno script su un’altra origine. Aggiungi `crossorigin` e un header CORS per riavere il messaggio.

Testato il 10 novembre 2026 con Chromium 152, @logbrew/browser 0.1.21 e @logbrew/sdk 0.1.44

Di [Furkan Erday](https://github.com/furkanerday). Furkan Erday è il fondatore di LogBrew. Sviluppa LogBrew ogni giorno con Claude Code e Codex.

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

## Cosa riceve la pagina da uno script che lancia un errore

| Come si carica lo script | Script eseguito | Dettagli dell’errore |
| --- | --- | --- |
| Dall’origine della pagina | Eseguito | Completo |
| Da un’altra origine | Eseguito | `Script error.` |
| Altra origine, `crossorigin` e header CORS | Eseguito | Completo |
| Altra origine, `crossorigin` e nessun header | Bloccato | Nessuno |

1 script, caricato in 4 modi. Completo significa messaggio, file, riga 1, colonna 7 e stack, letti dall’evento `error` su `window`.

## Riottieni l’errore completo

### Carica lo script con l’attributo crossorigin

L’attributo dice al browser di scaricare il file con CORS. Quando il server lo permette, il browser passa messaggio reale, file, riga e stack ai listener di errore della pagina.

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

### Invia l’header CORS dal server del file

Il server che ospita lo script deve rispondere con `Access-Control-Allow-Origin` impostato sull’origine della tua pagina, o `*` per un file pubblico. Nel nostro test, il solo header ha trasformato `Script error.` nel messaggio completo.

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

### Controlla che il file si carichi ancora

Con `crossorigin` impostato e nessun header, il browser blocca il file e lo script non parte mai. La console mostra `blocked by CORS policy` e `net::ERR_FAILED`, e l’elemento `script` emette il suo evento `error`.

Output

```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
```

### Oppure servi lo script dalla tua origine

Uno script dall’origine della pagina non silenzia mai i suoi errori. Includi il file nel bundle della tua app, o passalo da un proxy sul tuo dominio, e nessun header serve.

## Gestisci gli errori silenziati che ricevi ancora

### Contali, poi trova lo script

`Script error.` non porta nulla da correggere. Ognuno significa che uno script su un’altra origine ha lanciato un errore. Trova i tag senza `crossorigin` e parti da quelli caricati su ogni pagina.

### Leggi il messaggio reale nella console

Il browser stampa l’errore completo nella console anche quando lo silenzia per i tuoi listener. Nel nostro test la console ha mostrato `Uncaught Error: Keg is empty` mentre `window.onerror` ha ricevuto `Script error.`.

### Decidi cosa fare con i tag di terze parti

Un widget di chat o un tag di analytics senza header CORS ti lascia 2 scelte. Tienilo com’è e accetta gli errori silenziati, oppure aggiungi `crossorigin` così un header mancante blocca il tag e compare come caricamento fallito.

## Cosa abbiamo visto nei test

Abbiamo messo 1 script che lancia un errore, `throw new Error("Keg is empty: no beer left for order 42");`, su 2 server locali. La pagina girava su `http://127.0.0.1:4873` in Chromium 152 con `@logbrew/browser` 0.1.21 installato, e un secondo server su `http://127.0.0.1:4874` faceva da CDN. Abbiamo caricato lo script in 4 modi e letto ogni volta l’evento `error` su `window`.

Dall’origine della pagina, l’evento portava `Uncaught Error: Keg is empty: no beer left for order 42`, il file `/throws.js`, riga 1, colonna 7 e un oggetto `Error` con lo stack. Dall’altra origine senza `crossorigin`, l’evento portava `Script error.`, un nome di file vuoto, riga 0, colonna 0 e nessun oggetto `Error`. La console stampava comunque il messaggio completo.

Con `crossorigin="anonymous"` e `Access-Control-Allow-Origin: *` sulla CDN, l’evento portava di nuovo i dettagli completi. Con l’attributo e nessun header, il browser ha bloccato il file, lo script non è mai partito e l’elemento `script` ha emesso il suo evento `error`.

## Perché il browser nasconde il messaggio

Lo standard HTML silenzia gli errori degli script che la pagina ha scaricato da un’altra origine senza CORS. Il suo algoritmo imposta gli errori come silenziati quando la risposta era CORS-cross-origin, e poi riporta l’errore come `Script error.` senza URL, con riga 0, colonna 0 e nessun oggetto errore.

Il browser tratta il testo dell’errore di uno script cross-origin come dati di quello script, quindi la pagina non ne riceve nulla. La pagina MDN su `crossorigin` dice lo stesso in 1 riga. La registrazione degli errori tramite `window.onerror` è limitata per questi script.

whatwg/html#2440 chiedeva un modo per avere i dettagli senza CORS. L’hanno chiusa a luglio 2024, lo stesso giorno in cui si è aperta whatwg/html#10514 per segnalare che i browser non silenziano gli stessi casi allo stesso modo. Quella segnalazione è ancora aperta.

## Cosa registra LogBrew

Con i dettagli completi, l’SDK per browser ha inviato 1 problema chiamato `Browser error: Error`, con un frame dello stack per `/throws.js` a riga 1, colonna 7, il percorso del sorgente e la chiave di raggruppamento `browser.error:Error:/throws.js`. Ogni script che lancia un errore ha il suo problema.

Con l’errore silenziato, il problema aveva lo stesso nome, nessun frame dello stack, riga 0, colonna 0 e la chiave di raggruppamento `browser.error:Error`. Tutti gli errori silenziati finiscono in 1 solo problema, così il suo conteggio ti dice quanti errori non puoi ancora vedere.

Entrambi gli eventi portavano il percorso della pagina, il runtime `Chromium 152` su `macOS` e un breadcrumb `page_view`. Nessuno dei due portava il testo del messaggio. L’SDK lo ha segnato come `redacted`.

## Domande frequenti

### Cosa significa l’errore di script in JavaScript?

Uno script su un’altra origine ha lanciato un errore, e il browser ha nascosto i dettagli alla pagina perché il file non era caricato con CORS. Lo script in sé è partito.

### Perché l’errore di script ha riga 0 e nessuno stack?

Lo standard HTML sostituisce messaggio, file, riga, colonna e oggetto errore quando silenzia un errore. Resta solo la stringa `Script error.`.

### L’errore di script significa che lo script non si è caricato?

No. Uno script che non si carica emette l’evento `error` sul suo elemento `script` e non parte mai. `Script error.` significa che lo script è partito e ha lanciato un errore.

### Posso vedere il messaggio senza cambiare il server?

Nella console del browser sì. Nel tuo monitoraggio degli errori no. La pagina ha bisogno di `crossorigin` sul tag e dell’header CORS dal server, oppure dello script sulla tua origine.

### Devo filtrare l’errore di script dal monitoraggio degli errori?

Contalo invece. Il numero ti dice quanti errori non puoi vedere, e scende a 0 quando ogni script cross-origin si carica con CORS.

## Conta gli errori che non puoi ancora vedere

L’SDK per browser di LogBrew tiene ogni errore silenziato in 1 problema e dà a ogni errore reale file, riga e stack. Inizia con il generoso piano gratuito, senza carta.

[Inizia gratis](https://logbrew.co/it)

## Fonti

- [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)

## Altre soluzioni agli errori JavaScript

- [Risolvi l’errore Failed to fetch e distingui le sue 3 cause](https://logbrew.co/it/errors/failed-to-fetch)
- [Errori JavaScript che abbiamo riprodotto, e come risolvere ciascuno](https://logbrew.co/it/errors)
