webpack - 在 webpack 中使用 mapbox-gl 和 @mapbox/mapbox-gl-draw

标签 webpack mapbox-gl mapbox-gl-draw

我在 webpack 捆绑应用程序中包含 mapbox-gl 和 @mapbox/mapbox-gl-draw 时遇到了问题。我发现 mapbox 应该包含在 dist 版本中,所以我这样要求:在开发中很好,但在生产构建的运行时崩溃,我们收到诸如 e is not defined

之类的错误

需要什么配置吗?

最佳答案

好的,我找到了解决方案,发布在不同的问题上。 首先,为了简单起见,我们可以使用 mapbox 和 mapbox-gl 的常规要求:

const mapboxgl = require('mapbox-gl');
const MapboxDraw = require('@mapbox/mapbox-gl-draw');

我们只需要向 webpack 指定那些实际上指向它们的构建版本,所以我们添加一个别名:

resolve: {
    ...
    alias: {
      'mapbox-gl': 'mapbox-gl/dist/mapbox-gl.js',
      '@mapbox/mapbox-gl-draw': '@mapbox/mapbox-gl-draw/dist/mapbox-gl-draw.js',
    }
  }

但是运行时的错误是由于我在我的 webpack 配置中使用了 Uglify。因此,在我们使用 dist 版本时已经缩小的 mapbox 包通过 uglify 再次放置。为了避免这种情况,我们需要告诉 webpack 不要处理 mapbox 包,所以我们在 webpack 配置中有以下规则:

module: {
    ...
    noParse: /(mapbox-gl)\.js$/
}

关于webpack - 在 webpack 中使用 mapbox-gl 和 @mapbox/mapbox-gl-draw,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50423419/

相关文章:

webpack - 如何使用相同的插件组织不同模式的 Webpack 5 文件

mapbox-gl-js - 如何设置 mapbox-gl-draw 控件的位置?

javascript - 如何使用用户属性更改 MapboxGL 中的 line-dasharray 设置?

angular - 找不到模块 : Error: Can't resolve 'fs' angular

javascript - react : FitBounds issue when passing array of longlat - react-mapbox-gl

angular - 带有 Angular 6 的 Mapbox。 "map container not found"错误

javascript - Karma 覆盖率未达到 100%,但 (0/0)

网页包 : multiple entry points

javascript - Webpack Split Chunks Plugin 覆盖缓存组,正则表达式匹配错误?

mapbox-gl - 带对话框的自定义标记