Je suis dynamique chargeais de cette manière MapBox-GL JS:Uncaught Référence Erreur: mapboxgl est pas défini
var script = domConstruct.create("script");
script.type = "text/javascript";
script.charset = "utf-8";
script.onload = instantiateMap();
script.src = "https://api.mapbox.com/mapbox-gl-js/v0.39.1/mapbox-gl.js";
script.async = false;
document.getElementsByTagName("head")[0].appendChild(script);
Puis à un moment donné, j'accède comme suit dans la fonction « instantiateMap »:
mapboxgl.accessToken = 'pk.eyJ1IjoibW11a2ltIiwiYSI6ImNqNnduNHB2bDE3MHAycXRiOHR3aG0wMTYifQ.ConO2Bqm3yxPukZk6L9cjA';
var map = new mapboxgl.Map({
container: mapParent,
style: 'mapbox://styles/mapbox/streets-v9'
});
dès que ma commande atteint la ligne (mapboxgl.accessToken ...) il me donne l'erreur suivante sur Chrome Console:
Uncaught ReferenceError: mapboxgl is not defined
at Object._instantiateMap (VM2337 Sample.js:282)
_instantiateMap @ VM2337 Sample.js:282
Cet extrait de code particulier fonctionne correctement dans les situations suivantes: - L'inclusion dynamique de Mapbox-GL.js fonctionne également correctement dans un fichier HTML indépendant. - Inclusion statique de la bibliothèque dans les fichiers HTML.
Je sais que la bibliothèque se charge bien car je le vois dans le panneau de gauche sous Sources, mais je n'ai aucune idée de la raison pour laquelle lors de l'accès à l'objet mapboxgl, cette erreur apparaît.
J'ai également essayé d'inclure d'autres bibliothèques (jQuery, mapbox.js) de la même manière et elles fonctionnent bien.
Toute aide serait grandement appréciée!
Je pense que le « Puis, à un moment donné » est votre problème. Vous devez vous assurer que le script est exécuté avant de faire quoi que ce soit avec. –
MISE À JOUR: La cause était le chargement du chargeur Dojo avant d'essayer de charger le script et puisque ce chargeur est maintenant responsable du chargement des scripts, il reconnaît que Mapbox-GL n'est pas un module AMD et donc il ne charge pas correctement. J'utilise aussi le Dojo 'require' pour charger les scripts dynamiquement. – user3455358