Signatur
Beschreibung
dump() ist eine nicht standardisierte Methode des globalen Worker-Kontexts (self in Dedicated, Shared und Service Workern). Sie gibt die übergebene Zeichenkette unverändert auf die Standardausgabe des Browser-Prozesses aus, also auf das Terminal, aus dem Firefox gestartet wurde. In der Entwicklerwerkzeug-Konsole erscheint dabei nichts.
Nützlich ist die Methode vor allem für Low-Level-Debugging: bei automatisierten Tests (z. B. Firefox im Headless-Modus in CI-Pipelines), bei Abstürzen, nach denen die DevTools nicht mehr erreichbar sind, und bei Timing-Problemen, bei denen die Konsole selbst das Verhalten verfälschen würde. Anders als bei console.log() wird kein Zeilenumbruch angehängt, und Objekte werden nicht formatiert. Es wird schlicht der String-Wert ausgegeben.
In Firefox muss die Ausgabe erst aktiviert werden: In about:config die Einstellung browser.dom.window.dump.enabled auf true setzen. Bei Debug-Builds ist sie standardmäßig aktiv. Für normalen Produktivcode sollte man stattdessen console-Methoden verwenden.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $message Pflicht | string | Die auszugebende Zeichenkette. Andere Werte werden in einen String umgewandelt. Einen Zeilenumbruch (\n) muss man selbst anhängen. |
Rückgabewert
undefined).Beispiele
Einfache Ausgabe aus einem Dedicated Worker
// worker.js
self.dump('Worker gestartet\n');
self.addEventListener('message', (event) => {
self.dump(`Nachricht empfangen: ${event.data}\n`);
self.postMessage(event.data * 2);
});
Sicherer Logger mit Fallback auf die Konsole
// worker.js – funktioniert in allen Browsern
const log = (...teile) => {
const text = teile
.map((t) => (typeof t === 'string' ? t : JSON.stringify(t)))
.join(' ');
if (typeof self.dump === 'function') {
self.dump(`[worker ${Date.now()}] ${text}\n`);
} else {
console.log(text);
}
};
log('Berechnung beginnt', { n: 1e6 });
Lebenszyklus eines Service Workers im Terminal verfolgen
// sw.js
self.addEventListener('install', () => {
self.dump('SW: install\n');
self.skipWaiting();
});
self.addEventListener('activate', (event) => {
self.dump('SW: activate\n');
event.waitUntil(self.clients.claim());
});
self.addEventListener('fetch', (event) => {
self.dump(`SW: fetch ${event.request.url}\n`);
});
// Wichtig · Fallstricke
- Nicht standardisiert: Nur Firefox unterstützt die Methode. In Chrome, Safari und Edge ist
self.dumpundefined, ein Aufruf wirft dort einenTypeError. Deshalb immer zuerst mittypeof self.dump === 'function'prüfen. - Standardmäßig stumm: In Release-Builds von Firefox erscheint erst dann etwas, wenn
browser.dom.window.dump.enabledauftruegesetzt ist. Unter Windows braucht man zusätzlich den Startparameter-console, sonst gibt es kein sichtbares stdout. - Kein Zeilenumbruch, keine Formatierung:
\nmuss man selbst anhängen. Objekte werden zu[object Object], daher vorher mitJSON.stringify()umwandeln. - Die Ausgabe landet nicht in der DevTools-Konsole und lässt sich dort auch nicht filtern.
- Die Methode ist für Debugging gedacht. Aufrufe vor der Auslieferung entfernen, damit Protokolle keine sensiblen Daten preisgeben.