Start · Sprachen · JavaScript · Referenz · ErrorEvent.message

ErrorEvent.message

Eigenschaft

Schreibgeschützte Eigenschaft, die die für Menschen lesbare Fehlermeldung eines <code>ErrorEvent</code> als String liefert.

seit JavaScript Baseline: alle Browser (auch in Web Workern verfüg Kategorie: webapi

Signatur

ErrorEvent.message

Beschreibung

Die Eigenschaft message des ErrorEvent-Interfaces enthält eine kurze, für Menschen lesbare Beschreibung des aufgetretenen Fehlers, z. B. "Uncaught TypeError: x is not a function". Das ErrorEvent wird ausgelöst, wenn ein Skript einen nicht abgefangenen Laufzeitfehler wirft – typischerweise am window-Objekt, im globalen Kontext eines Web Workers oder am Worker-Objekt im Hauptthread.

Gebraucht wird message vor allem für globales Fehler-Logging: Zusammen mit filename, lineno, colno und error lässt sich ein vollständiger Fehlerbericht an einen Überwachungsdienst schicken. Anders als error (das eigentliche Fehlerobjekt samt Stacktrace) ist message immer ein String und deshalb einfach zu serialisieren.

Wie die Meldung genau aussieht, legt der Browser fest. Oft stellt er ein Präfix wie "Uncaught " voran, und der Text kann sich zwischen Chrome, Firefox und Safari unterscheiden. Werte ihn deshalb nicht per exaktem String-Vergleich aus, sondern prüfe bei Bedarf lieber event.error instanceof TypeError oder Ähnliches.

Rückgabewert

Typ
string
Beschreibung
Die lesbare Fehlermeldung. Wurde das Ereignis manuell ohne message erzeugt, ist der Wert ein leerer String "".

Beispiele

Globale Laufzeitfehler protokollieren

window.addEventListener('error', (event) => {
  console.log('Meldung:', event.message);
  console.log('Ort:', `${event.filename}:${event.lineno}:${event.colno}`);
});

// Fehler absichtlich auslösen
setTimeout(() => {
  undefinedFunction();
}, 0);
Meldung: Uncaught ReferenceError: undefinedFunction is not defined Ort: https://example.com/app.js:7:3

Fehlerbericht an einen Server senden

window.addEventListener('error', (event) => {
  const report = {
    message: event.message,
    source: event.filename,
    line: event.lineno,
    column: event.colno,
    stack: event.error?.stack ?? null,
    url: location.href,
    time: new Date().toISOString()
  };
  // sendBeacon funktioniert auch beim Verlassen der Seite zuverlässig
  navigator.sendBeacon('/api/js-errors', JSON.stringify(report));
});

Fehler aus einem Web Worker abfangen

// Hauptthread
const worker = new Worker('worker.js');

worker.onerror = (event) => {
  console.error('Worker-Fehler:', event.message);
  event.preventDefault(); // Standardausgabe in der Konsole unterdrücken
};

// worker.js:
// throw new Error('Datenformat ungültig');
Worker-Fehler: Uncaught Error: Datenformat ungültig

ErrorEvent manuell erzeugen

const evt = new ErrorEvent('error', {
  message: 'Konfiguration konnte nicht geladen werden',
  filename: 'config.js',
  lineno: 12
});

console.log(evt.message);
console.log(new ErrorEvent('error').message === '');
Konfiguration konnte nicht geladen werden true

// Wichtig · Fallstricke

  • Cross-Origin-Skripte: Stammt der Fehler aus einem Skript einer anderen Herkunft, das ohne CORS geladen wurde, maskiert der Browser die Details. message ist dann nur "Script error.", filename ist leer, lineno/colno sind 0 und error ist null. Abhilfe: das Skript mit <script crossorigin="anonymous"> einbinden, und der Server muss Access-Control-Allow-Origin senden.
  • Schreibgeschützt: Eine Zuweisung wie event.message = '…' wird stillschweigend ignoriert (im Strict Mode kommt es nicht zu einem Fehler, der Wert bleibt einfach unverändert). Einen eigenen Wert kannst du nur über den Konstruktor setzen.
  • Uneinheitliches Format: Präfixe wie "Uncaught " und die genauen Formulierungen hängen vom Browser ab. Für die Auswertung eignet sich event.error besser.
  • Keine Ladefehler: Scheitert das Laden eines <img> oder <script>, wird ein einfaches Event ausgelöst und kein ErrorEvent – eine message gibt es dann nicht.
  • Abgelehnte Promises lösen kein error-Ereignis aus. Dafür brauchst du unhandledrejection.
  • onerror-Signatur: Bei window.onerror bekommt der Handler als erstes Argument direkt den Meldungs-String (message, source, lineno, colno, error) und nicht das Ereignisobjekt. Mit addEventListener erhältst du dagegen das ErrorEvent.
  • Sicherheit: Die Meldung kann Nutzerdaten oder Teile von URLs enthalten. Füge sie nie ungefiltert per innerHTML ein (XSS-Gefahr), sondern verwende textContent.