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

27 Nov 2023 à 08:53 par larevuegeek - 1152 vues - 0 com.
Dev Javascript
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 :

    • 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

A voir également

Commentaires

Soyez le 1er à commenter !

Ecrire un commentaire

Doit contenir 4 caractères minimum et seulement des caractères alphanumériques - et _
Veuillez préciser une adresse email valide.

Derniers bons plans

Google Pixel 9 Pro – Porcelaine, 128GB
20 Nov 2024, 08:09
1099.00 € 999.00 €
Bose SoundLink Micro : Petite Enceinte Portable étanche...
18 Nov 2024, 08:25
119.95 € 89.95 €
Casque Bluetooth Marshall Major IV - pliables, autonomie...
18 Nov 2024, 08:21
87.00 € 79.99 €

Dernières actualités