2017-08-07 154 views
1

對於一個項目,我必須使用RequireJS來加載mapbox-gl-js庫。但是,它不工作,我總是得到以下錯誤消息:如何使用RequireJS加載mapbox-gl-js

Uncaught ReferenceError: mapboxgl is not defined

這是我的RequireJS代碼:

requirejs.config({ 
    { 
     ... 
     'leaflet-mapbox-gl': 'js/leaflet-mapbox-gl', 
     'mapbox-gl': 'js/mapbox-gl' 
    } 

我想與瓣葉mapbox-GL一起使用。沒有RequireJS一切正常,但顯然不是我想要的。我也試過以下墊片配置沒有成功:

shim : { 
    'mapbox-gl': { 
     exports: ['mapboxgl'] 
    } 
    'leaflet-mapbox-gl': { 
     deps: ['leaflet','mapbox-gl'] 
    } 
} 

如何使用RequireJS正確加載mapbox-gl-js?

+0

我從來沒有使用RequireJS,但看看doc中的例子,'exports'似乎總是一個字符串,而不是一串字符串。也許:'exports:'mapboxgl''? –

+0

謝謝史蒂夫。不幸的是,這沒有什麼區別。 – thunder

回答

1

自己弄明白了。問題不是mapbox-gl-js,而是leaflet-mapbox-gl。有環繞瓣葉mapbox-GL下面的代碼,使其與RequireJS工作:

(function (factory) { 
if (typeof define === 'function' && define.amd) { 
    // AMD. Register as an anonymous module depending on mapboxgl. 
    define(['mapboxgl'], factory); 
} else { 
    // No AMD. 
    factory(mapboxgl); 
} 
}(function (mapboxgl) { 
//...original leaflet-mapbox-gl code 
})); 

這是我的墊片配置:

shim : 
    { 
     // other code ... 
     'mapboxgl' : { 
      exports: 'mapboxgl' 
     }, 
     'leaflet-mapbox-gl': { 
      deps: ['leaflet','mapboxgl'] 
     } 
    } 

希望這有助於別人