---
title: "Atasi script error yang menyembunyikan pesan, file, dan barisnya"
description: "Script error. dengan baris 0 dan tanpa stack berarti browser menyembunyikan error dari skrip di origin lain. Tambahkan crossorigin dan header CORS untuk mendapatkan pesannya kembali."
canonical: "https://logbrew.co/id/errors/script-error"
last_updated: "2026-11-10"
---

# Atasi script error yang menyembunyikan pesan, file, dan barisnya

`Script error.` dengan baris 0 dan tanpa stack berarti browser menyembunyikan error dari skrip di origin lain. Tambahkan `crossorigin` dan header CORS untuk mendapatkan pesannya kembali.

Diuji pada 10 November 2026 dengan Chromium 152, @logbrew/browser 0.1.21, dan @logbrew/sdk 0.1.44

Oleh [Furkan Erday](https://github.com/furkanerday). Furkan Erday adalah pendiri LogBrew. Setiap hari ia membangun LogBrew dengan Claude Code dan Codex.

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

## Apa yang diketahui halaman dari skrip yang melempar error

| Cara skrip dimuat | Skrip berjalan | Detail error |
| --- | --- | --- |
| Dari origin halaman sendiri | Berjalan | Lengkap |
| Dari origin lain | Berjalan | `Script error.` |
| Origin lain, `crossorigin` dan header CORS | Berjalan | Lengkap |
| Origin lain, `crossorigin` tanpa header | Diblokir | Tidak ada |

1 skrip, dimuat dengan 4 cara. Lengkap berarti pesan, file, baris 1, kolom 7, dan stack terbaca dari event `error` di `window`.

## Dapatkan error lengkap kembali

### Muat skrip dengan atribut crossorigin

Atribut ini menyuruh browser mengambil file dengan CORS. Saat server mengizinkannya, browser meneruskan pesan, file, baris, dan stack yang sebenarnya ke listener error di halaman.

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

### Kirim header CORS dari server file

Server yang menghosting skrip harus menjawab dengan `Access-Control-Allow-Origin` yang diisi origin halaman kamu, atau `*` untuk file publik. Dalam pengujian kami, header itu saja mengubah `Script error.` menjadi pesan lengkap.

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

### Pastikan file masih termuat

Dengan `crossorigin` terpasang dan tanpa header, browser memblokir file dan skrip tidak pernah berjalan. Konsol lalu menampilkan `blocked by CORS policy` dan `net::ERR_FAILED`, dan elemen `script` memicu event `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
```

### Atau sajikan skrip dari origin kamu sendiri

Skrip dari origin halaman sendiri tidak pernah disembunyikan error-nya. Bundel file itu bersama aplikasi kamu, atau proksikan lewat domain kamu, dan header tidak diperlukan.

## Tangani error tersembunyi yang masih muncul

### Hitung, lalu cari skripnya

`Script error.` tidak membawa apa pun untuk diperbaiki. Setiap satu berarti skrip di origin lain melempar error. Cari tag tanpa `crossorigin` dan mulai dari yang dimuat di setiap halaman.

### Baca pesan sebenarnya di konsol

Browser mencetak error lengkap ke konsol meski menyembunyikannya dari listener kamu. Dalam pengujian kami, konsol menampilkan `Uncaught Error: Keg is empty` sementara `window.onerror` menerima `Script error.`.

### Putuskan nasib tag pihak ketiga

Widget chat atau tag analitik tanpa header CORS menyisakan 2 pilihan. Biarkan apa adanya dan terima error tersembunyi, atau tambahkan `crossorigin` supaya header yang hilang memblokir tag itu dan muncul sebagai gagal muat.

## Hasil pengujian kami

Kami menaruh 1 skrip yang melempar error, `throw new Error("Keg is empty: no beer left for order 42");`, di 2 server lokal. Halaman berjalan di `http://127.0.0.1:4873` pada Chromium 152 dengan `@logbrew/browser` 0.1.21 terpasang, dan server kedua di `http://127.0.0.1:4874` berperan sebagai CDN. Kami memuat skrip dengan 4 cara dan membaca event `error` di `window` setiap kali.

Dari origin halaman sendiri, event membawa `Uncaught Error: Keg is empty: no beer left for order 42`, file `/throws.js`, baris 1, kolom 7, dan objek `Error` dengan stack. Dari origin lain tanpa `crossorigin`, event membawa `Script error.`, nama file kosong, baris 0, kolom 0, dan tanpa objek `Error`. Konsol tetap mencetak pesan lengkapnya.

Dengan `crossorigin="anonymous"` dan `Access-Control-Allow-Origin: *` di CDN, event kembali membawa detail lengkap. Dengan atribut itu tanpa header, browser memblokir file, skrip tidak pernah berjalan, dan elemen `script` memicu event `error`.

## Kenapa browser menyembunyikan pesannya

Standar HTML menyembunyikan error dari skrip yang diambil halaman lintas origin tanpa CORS. Algoritmanya menandai muted errors saat respons bersifat CORS-cross-origin, lalu melaporkan error itu sebagai `Script error.` tanpa URL, baris 0, kolom 0, dan tanpa objek error.

Browser memperlakukan teks error dari skrip lintas origin sebagai data skrip itu, jadi halaman tidak mendapat apa pun. Halaman MDN tentang `crossorigin` mengatakan hal yang sama dalam 1 baris. Akses ke pencatatan error lewat `window.onerror` dibatasi untuk skrip semacam itu.

whatwg/html#2440 meminta cara mendapatkan detail tanpa CORS. Laporan itu ditutup pada Juli 2024, di hari yang sama whatwg/html#10514 dibuka untuk melaporkan bahwa browser tidak menyembunyikan kasus yang sama dengan cara yang sama. Laporan itu masih terbuka.

## Apa yang direkam LogBrew

Dengan detail lengkap, SDK browser mengirim 1 masalah bernama `Browser error: Error` dengan frame stack untuk `/throws.js` di baris 1, kolom 7, path sumber, dan kunci pengelompokan `browser.error:Error:/throws.js`. Setiap skrip yang melempar error mendapat masalahnya sendiri.

Dengan error tersembunyi, masalahnya punya nama yang sama, tanpa frame stack, baris 0, kolom 0, dan kunci pengelompokan `browser.error:Error`. Semua error tersembunyi berbagi 1 masalah itu, jadi jumlahnya memberi tahu berapa error yang belum bisa kamu lihat.

Kedua event membawa path halaman, runtime `Chromium 152` di `macOS`, dan breadcrumb `page_view`. Keduanya tidak membawa teks pesan. SDK menandainya `redacted`.

## Pertanyaan yang sering diajukan

### Apa arti Script error. di JavaScript?

Skrip dari origin lain melempar error, dan browser menyembunyikan detailnya dari halaman karena file itu tidak dimuat dengan CORS. Skripnya sendiri berjalan.

### Kenapa Script error. punya baris 0 dan tanpa stack?

Standar HTML mengganti pesan, file, baris, kolom, dan objek error saat menyembunyikan error. Hanya string `Script error.` yang tersisa.

### Apakah Script error. berarti skrip gagal dimuat?

Tidak. Skrip yang gagal dimuat memicu event `error` di elemen `script` dan tidak pernah berjalan. `Script error.` berarti skrip berjalan dan melempar error.

### Bisakah pesannya dilihat tanpa mengubah server?

Di konsol browser, bisa. Di pelacakan error kamu, tidak. Halaman butuh `crossorigin` di tag dan header CORS dari server, atau skrip di origin kamu sendiri.

### Haruskah Script error. difilter dari pelacakan error?

Hitung saja. Angkanya memberi tahu berapa error yang belum bisa kamu lihat, dan turun ke 0 begitu setiap skrip lintas origin dimuat dengan CORS.

## Hitung error yang belum bisa kamu lihat

SDK browser LogBrew menyimpan setiap error tersembunyi dalam 1 masalah dan memberi setiap error sungguhan file, baris, dan stack-nya. Mulai dengan paket gratis yang lega, tanpa perlu kartu.

[Mulai gratis](https://logbrew.co/id)

## Sumber

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

## Solusi error JavaScript lainnya

- [Atasi error Failed to fetch dan bedakan 3 penyebabnya](https://logbrew.co/id/errors/failed-to-fetch)
- [Error JavaScript yang kami reproduksi, dan cara mengatasinya](https://logbrew.co/id/errors)
