Accueil·Messages d’erreur

node · JavaScript

Le message

ReferenceError: window is not defined

Ce que cela veut dire

Le code s'est exécuté dans Node côté serveur, pas dans un navigateur. Node n'a ni window, ni document, ni localStorage : toucher à window pendant le chargement d'un module dans un cadre qui rend d'abord côté serveur, comme Next.js ou Nuxt, s'arrête ici — souvent une seule ligne hors du composant, ou l'import même d'une bibliothèque réservée au navigateur. Si le travail est propre au navigateur, protégez-le par typeof window !== 'undefined' ou, mieux, déplacez-le dans useEffect, qui ne s'exécute que dans le navigateur. Quand toute une bibliothèque est réservée au navigateur, Next.js peut l'écarter du rendu serveur avec dynamic(() => import('./C'), { ssr: false }) — au prix de l'absence de cette partie dans le HTML rendu par le serveur.

Le correctif

Pas de commande en une ligne ici. L’explication dit où regarder.

Émis par
node
JavaScript
15

Les erreurs du navigateur et de Node disent d'ordinaire ce qui a cassé et non pourquoi la valeur est devenue telle — vous avez lu undefined, ce n'était pas une fonction, ce n'était pas du JSON — l'endroit à corriger se trouve donc en amont de la ligne qui a levé l'erreur, et faire taire cette seule ligne avec ?. et des valeurs par défaut fait revenir le même problème plus loin, sous une forme plus difficile à reconnaître.

Lire un message d’erreur

  • Lisez à partir de la première ligne. Plus on descend, plus il s’agit des entrailles de l’outil ; la cause est généralement en haut.
  • S’il y a un fichier et un numéro de ligne, commencez là — pas la première image de la pile, mais la ligne la plus haute qui nomme un fichier de vous.
  • Cherchez le message tel quel, mais retirez d’abord vos chemins et vos noms de variables : c’est cela qui empêche la correspondance.
  • La même situation se formule autrement selon la version de l’outil. Si les résultats sonnent faux, ajoutez le numéro de version.
  • Avant de coller un correctif, vérifiez ce qu’il jette. Certains sont irréversibles.

Questions fréquentes

Q. Que veut dire « ReferenceError: window is not defined » ?

Le code s'est exécuté dans Node côté serveur, pas dans un navigateur. Node n'a ni window, ni document, ni localStorage : toucher à window pendant le chargement d'un module dans un cadre qui rend d'abord côté serveur, comme Next.js ou Nuxt, s'arrête ici — souvent une seule ligne hors du composant, ou l'import même d'une bibliothèque réservée au navigateur. Si le travail est propre au navigateur, protégez-le par typeof window !== 'undefined' ou, mieux, déplacez-le dans useEffect, qui ne s'exécute que dans le navigateur. Quand toute une bibliothèque est réservée au navigateur, Next.js peut l'écarter du rendu serveur avec dynamic(() => import('./C'), { ssr: false }) — au prix de l'absence de cette partie dans le HTML rendu par le serveur.

Q. Comment le corriger ?

Pas de commande en une ligne. L’explication ci-dessus dit où regarder.

Q. Quel outil émet cela ?

node. Cela relève de JavaScript, et le message compte 5 mots.

Erreurs voisines