Start·Fehlermeldungen

node · JavaScript

Die Meldung

ReferenceError: window is not defined

Was es bedeutet

Der Code lief in Node auf dem Server, nicht in einem Browser. Node kennt kein window, kein document und kein localStorage; wer also window anfasst, während ein Modul in einem Framework geladen wird, das zuerst serverseitig rendert — etwa Next.js oder Nuxt —, bleibt hier stehen. Oft ist es eine einzelne Zeile außerhalb der Komponente oder schon der Import einer reinen Browser-Bibliothek. Ist die Arbeit browserspezifisch, sichern Sie sie mit typeof window !== 'undefined' ab oder verlegen Sie sie besser in useEffect, der nur im Browser läuft. Ist eine ganze Bibliothek browserspezifisch, nimmt Next.js sie mit dynamic(() => import('./C'), { ssr: false }) aus dem Server-Rendering — um den Preis, dass dieser Teil im servergenerierten HTML fehlt.

Die Lösung

Hier hilft kein Einzeiler. Die Erklärung sagt, worauf zu schauen ist.

Ausgegeben von
node
JavaScript
15

Browser- und Node-Fehler nennen meist, was kaputtging, aber nicht, warum der Wert so wurde — Sie haben undefined gelesen, es war keine Funktion, es war kein JSON — die Stelle zum Reparieren liegt also stromaufwärts der werfenden Zeile, und nur diese Zeile mit ?. und Standardwerten stillzulegen lässt dasselbe Problem weiter entfernt und in schwerer erkennbarer Gestalt wiederkehren.

Eine Fehlermeldung lesen

  • Von der ersten Zeile abwärts lesen. Weiter unten geht es um das Innere des Werkzeugs; die Ursache steht meist oben.
  • Gibt es Datei und Zeilennummer, dort anfangen — nicht der oberste Stack-Frame, sondern die oberste Zeile, die eine eigene Datei nennt.
  • Die Meldung wörtlich suchen, vorher aber eigene Pfade und Variablennamen entfernen; genau die verhindern den Treffer.
  • Dieselbe Lage wird je Werkzeugversion anders formuliert. Passen die Treffer nicht, die Versionsnummer mit in die Suche.
  • Vor dem Einfügen einer Lösung prüfen, was sie verwirft. Manches davon lässt sich nicht zurückholen.

Häufige Fragen

Q. Was bedeutet „ReferenceError: window is not defined“?

Der Code lief in Node auf dem Server, nicht in einem Browser. Node kennt kein window, kein document und kein localStorage; wer also window anfasst, während ein Modul in einem Framework geladen wird, das zuerst serverseitig rendert — etwa Next.js oder Nuxt —, bleibt hier stehen. Oft ist es eine einzelne Zeile außerhalb der Komponente oder schon der Import einer reinen Browser-Bibliothek. Ist die Arbeit browserspezifisch, sichern Sie sie mit typeof window !== 'undefined' ab oder verlegen Sie sie besser in useEffect, der nur im Browser läuft. Ist eine ganze Bibliothek browserspezifisch, nimmt Next.js sie mit dynamic(() => import('./C'), { ssr: false }) aus dem Server-Rendering — um den Preis, dass dieser Teil im servergenerierten HTML fehlt.

Q. Wie behebe ich das?

Es gibt keinen Einzeiler. Die Erklärung oben sagt, worauf zu schauen ist.

Q. Welches Werkzeug gibt das aus?

node. Es gehört zu JavaScript, und die Meldung hat 5 Wörter.

Verwandte Fehler