使用 Deck.GL 作为 Webpack 外部
Using Deck.GL as Webpack external
我目前正在开发两个不同的 React 应用程序,它们使用 Deck.GL 渲染两个地图,每个地图都有不同类型的图层。
当它们作为独立使用时,它们都可以完美地工作,但是,当两者安装在同一个父应用程序中时,我访问的第二张地图崩溃了(由于加载库两次左右)。
鉴于此,我向两个应用程序的 Webpack 外部添加了 Deck.GL,并向父应用程序添加了一个 unpkg link。然而,这给出了一个 "Unable to resolve 'h3'" 错误,所以我也将 h3-js 放在外部但它一直在 Deck.GL javascript 上搜索它。
我的下一步是从 @deck.gl/core、@deck.gl/react、@deck.gl/layers 等导入,只加载需要的内容,但我遇到了类似的错误因为它在@deck.gl/layers.
中搜索 'luma'
那么,如何正确定义 Deck.GL 作为 Webpack 外部?
编辑:
将 deck.gl 添加到外部时出现的错误:
Unable to resolve bare specifier "h3" from https://unpkg.com/deck.gl@7.3.6/dist.min.js
导航到使用不同图层的第二张地图时出现的错误:
似乎这个错误是在使用 Angular 路由浏览页面时启动的,如果我使用简单的 <a href>
它们可以完美地工作,因为它会重新加载整个页面并且不会加载库的两个实例。
问题是由不正确的 webpack 外部配置和错误选择要从 unpkg/jsdelivr 导入的包引起的。如果有人遇到同样的问题,请查看 Deck 自己的网站:
config.externals = {
'highlight.js': 'hljs',
'h3-js': 'h3',
'deck.gl': 'deck',
'@deck.gl/aggregation-layers': 'deck',
'@deck.gl/core': 'deck',
'@deck.gl/extensions': 'deck',
'@deck.gl/geo-layers': 'deck',
'@deck.gl/layers': 'deck',
'@deck.gl/mesh-layers': 'deck',
'@loaders.gl/core': 'loaders',
'@luma.gl/core': 'luma',
'mapbox-gl': 'mapboxgl'
};
<script src='https://api.tiles.mapbox.com/mapbox-gl-js/v1.3.1/mapbox-gl.js'></script>
<script src="https://unpkg.com/h3-js"></script>
<script src="https://bundle.run/s2-geometry@1.2.10"></script>
<script src="https://unpkg.com/deck.gl@^8.0.0/dist.min.js"></script>
我目前正在开发两个不同的 React 应用程序,它们使用 Deck.GL 渲染两个地图,每个地图都有不同类型的图层。 当它们作为独立使用时,它们都可以完美地工作,但是,当两者安装在同一个父应用程序中时,我访问的第二张地图崩溃了(由于加载库两次左右)。
鉴于此,我向两个应用程序的 Webpack 外部添加了 Deck.GL,并向父应用程序添加了一个 unpkg link。然而,这给出了一个 "Unable to resolve 'h3'" 错误,所以我也将 h3-js 放在外部但它一直在 Deck.GL javascript 上搜索它。 我的下一步是从 @deck.gl/core、@deck.gl/react、@deck.gl/layers 等导入,只加载需要的内容,但我遇到了类似的错误因为它在@deck.gl/layers.
中搜索 'luma'那么,如何正确定义 Deck.GL 作为 Webpack 外部?
编辑:
将 deck.gl 添加到外部时出现的错误:
Unable to resolve bare specifier "h3" from https://unpkg.com/deck.gl@7.3.6/dist.min.js
导航到使用不同图层的第二张地图时出现的错误:
<a href>
它们可以完美地工作,因为它会重新加载整个页面并且不会加载库的两个实例。
问题是由不正确的 webpack 外部配置和错误选择要从 unpkg/jsdelivr 导入的包引起的。如果有人遇到同样的问题,请查看 Deck 自己的网站:
config.externals = {
'highlight.js': 'hljs',
'h3-js': 'h3',
'deck.gl': 'deck',
'@deck.gl/aggregation-layers': 'deck',
'@deck.gl/core': 'deck',
'@deck.gl/extensions': 'deck',
'@deck.gl/geo-layers': 'deck',
'@deck.gl/layers': 'deck',
'@deck.gl/mesh-layers': 'deck',
'@loaders.gl/core': 'loaders',
'@luma.gl/core': 'luma',
'mapbox-gl': 'mapboxgl'
};
<script src='https://api.tiles.mapbox.com/mapbox-gl-js/v1.3.1/mapbox-gl.js'></script>
<script src="https://unpkg.com/h3-js"></script>
<script src="https://bundle.run/s2-geometry@1.2.10"></script>
<script src="https://unpkg.com/deck.gl@^8.0.0/dist.min.js"></script>