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.