Correction de l'erreur window is not defined dans Next.js avec Leaflet

Correction de l'erreur window is not defined dans Next.js avec Leaflet

27 nov. 2023 · 1 min de lecture · 2 222 vues
TL;DR Dans le développement d'applications Next.js, l'erreur window is not defined peut survenir lors de l'utilisation de bibliothèques qui dépendent de l'objet window, indisponible lors du rendu côté serveur (SSR). Voici un tutoriel pour résoudre ce problème spécifiquement avec la bibliothèque Leaflet.

Le problème

L'erreur ⨯ node_modules\leaflet\dist\leaflet-src.js (230:18) @ window ⨯ ReferenceError: window is not defined survient lorsqu'on essaie d'utiliser Leaflet, une bibliothèque JavaScript pour les cartes interactives, dans un environnement Next.js en raison de son fonctionnement basé sur l'objet window du navigateur, qui n'est pas disponible en SSR.

Solution

La solution consiste à utiliser le chargement dynamique de Next.js avec l'option { ssr: false } pour s'assurer que Leaflet est uniquement chargé et exécuté côté client.

Étapes :

  • Installation de Leaflet : Assurez-vous que Leaflet est installé dans votre projet.
npm install leaflet 
  • Utilisation de dynamic de Next.js :

PUBLICITÉ
  • Importez la fonction dynamic de Next.js.
  • Créez un composant dynamique pour LeafletMap en désactivant le rendu côté serveur.
import dynamic from 'next/dynamic'; // Composant LeafletMap chargé dynamiquement 

const LeafletMap = dynamic( () => import('./_components/map/LeafletMap'), { ssr: false } ); 
  • Utilisation de LeafletMap dans votre composant :

    • Utilisez le composant LeafletMap dans votre composant ou page Next.js comme d'habitude.
const MyPage = () => ( <div> <h1>Ma Carte Leaflet</h1> <LeafletMap /> </div> ); 

En suivant ces étapes, vous pouvez intégrer Leaflet dans votre application Next.js sans rencontrer l'erreur window is not defined. Cette méthode garantit que Leaflet est chargé uniquement côté client où l'objet window est disponible, évitant ainsi les problèmes liés au rendu côté serveur.

N'hésitez pas à adapter ces instructions à votre configuration spécifique et à explorer d'autres aspects de Next.js et Leaflet pour enrichir votre application web.

Ressources Supplémentaires

SUR LA CHAÎNE · NOUVELLE VIDÉO ZimaBoard 2 & ZimaOS : ce MINI SERVEUR m’a bluffé ! Adieu Raspberry Pi ? Voir la vidéo →
Cette astuce t'a aidé ? ça a marché ?
écrit par LaRevueGeek décrypte l'actualité high-tech et la culture geek depuis 2014 : tests, bons plans, ciné et tout ce qui touche, de près ou de loin, au monde des geeks.
S'abonner · 33,2 k
$ ls ./a-lire-aussi

À lire aussi

Toutes les astuces →

Commentaires

0
~/commentaires — nouveau
$ connecte-toi pour donner ton avis…
connecté en invité · se connecter Créer un compte
0% lu
💬 0