mapbox-gl-js在与browserify捆绑时不会渲染

时间:2017-03-14 13:14:21

标签: javascript cordova browserify mapbox-gl-js

我对mapbox-gl-js有一个奇怪的问题。当我将mapbox-gl.js文件作为CDN添加到html doc head时,地图渲染得很好。当我需要它并将其与browserify捆绑在一起时,如图所示,地图不会渲染,我收到类似这样的捆绑错误:Error: Cannot find module './feature' from '/home/.../mbtst/node_modules/mapbox-gl/dist'

文档描述了如何使用模块捆绑器: https://www.mapbox.com/mapbox-gl-js/api/。 在发布此问题时(由于此问题已经更改):

npm install --save mapbox-gl
import mapboxgl from 'mapbox-gl/dist/mapbox-gl';
// or "const mapboxgl = require('mapbox-gl/dist/mapbox-gl');"

我的地图是这样发起的:

mapboxgl.accessToken = 'pk.eyJ1IjoiZWxsdnRyemVnIiwiYSI6ImNpejl4M2M0NDAxbWoycXRlanZnc283dnYifQ.sPFCSTsdlCOp1hk6afDvJg';
this.map = new mapboxgl.Map({
    container: 'map-container', // container id
    style: 'mapbox://styles/mapbox/streets-v9', 
    center: [6.16342, 62.47126], // aalesund 
    zoom: 11
});

如果我只是要求模块require('mapbox-gl'); - 同样的错误。

我甚至尝试从CDN源保存文件并要求该文件 - 它抱怨缺少多个依赖模块。

代码在这个回购中: https://github.com/awesomemaptools/mbtst

PS:我需要捆绑脚本以便在Cordova应用程序中脱机使用,即使用cdn不是一种选择。

2 个答案:

答案 0 :(得分:2)

事实证明这是一个错误,mapbox中的人正在努力修复它,请参阅此处的问题:https://github.com/mapbox/mapbox-gl-js/issues/4453

与此同时,我从mapbox-gl版本“^ 0.33.1”升级到“^ 0.34.0”,现在它可以解决这个问题,包括src而不是像这样的dist:

const mapboxgl = require('mapbox-gl/src/index.js');

我尝试使用之前的版本,但它当时没有用。

答案 1 :(得分:0)

您提供的代码似乎基本上没问题。尝试使用require代替import

const mapboxgl = require('mapbox-gl/dist/mapbox-gl');

然后在终端中呼叫以下内容:

browserify your-main-js-file.js > bundle.js

这会将您的代码和所需模块添加到创建的JavaScript文件bundle.js中,因此即使您已离线,所有内容都应该可用。

然后通过script-tag将输出包添加到HTML页面:

<script src="bundle.js"></script>

有关详细信息,请参阅https://github.com/substack/browserify-handbook#bundling-for-the-browser,并查看options browserify用于自定义捆绑包。