Skip to content

Commit d683d1f

Browse files
[fix]xml elasticsearch webpack5报错 review by qiw
1 parent 4d79214 commit d683d1f

File tree

3 files changed

+39
-16
lines changed

3 files changed

+39
-16
lines changed

build/webpack.config.mapboxgl.js

Lines changed: 18 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -20,16 +20,24 @@ module.exports = {
2020
//其它解决方案配置
2121
resolve: configBase.resolve,
2222

23-
externals: Object.assign({}, configBase.externals, {
24-
'mapbox-gl': 'mapboxgl',
25-
three: 'function(){try{return THREE}catch(e){return {}}}()',
26-
'deck.gl': '(function(){try{return DeckGL}catch(e){return {}}})()',
27-
'luma.gl': '(function(){try{return luma}catch(e){return {}}})()',
28-
'webgl-debug': '(function(){try{return webgl-debug}catch(e){return {}}})()',
29-
xlsx: 'function(){try{return XLSX}catch(e){return {}}}()',
30-
canvg: 'function(){try{return canvg}catch(e){return {}}}()',
31-
jsonsql: 'function(){try{return jsonsql}catch(e){return {}}}()'
32-
}),
23+
externals: [
24+
Object.assign({}, configBase.externals, {
25+
'mapbox-gl': 'mapboxgl',
26+
three: 'function(){try{return THREE}catch(e){return {}}}()',
27+
'deck.gl': '(function(){try{return DeckGL}catch(e){return {}}})()',
28+
'luma.gl': '(function(){try{return luma}catch(e){return {}}})()',
29+
'webgl-debug': '(function(){try{return webgl-debug}catch(e){return {}}})()',
30+
xlsx: 'function(){try{return XLSX}catch(e){return {}}}()',
31+
canvg: 'function(){try{return canvg}catch(e){return {}}}()',
32+
jsonsql: 'function(){try{return jsonsql}catch(e){return {}}}()'
33+
}),
34+
function ({context, request}, callback) {
35+
if (/xml-js\/lib\/xml2json/.test(request)) {
36+
return callback(null, 'function(){try{return xml2json}catch(e){return {}}}()');
37+
}
38+
callback();
39+
}
40+
],
3341

3442
module: {
3543
noParse: /[\/\\]node_modules[\/\\]mapbox-gl[\/\\]dist[\/\\]mapbox-gl\.js$/,

src/common/thirdparty/elasticsearch/ElasticSearch.js

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -17,9 +17,9 @@ import {Util} from "../../commontypes/Util";
1717
* @param {function} [options.outOfGeoFence] - 数据超出地理围栏后执行的函数。
1818
* @param {Object} [options.geoFence] - 地理围栏。
1919
* @description
20-
* <h3 style="font-size: 20px;margin-top: 20px;margin-bottom: 10px;">11.1.0</h3>
20+
* <h3 style="font-size: 20px;margin-top: 20px;margin-bottom: 10px;">Tips</h3>
2121
* 该功能依赖<a href="https://github.com/elastic/elasticsearch">@elastic/elasticsearch</a>, webpack5或其他不包含Node.js Polyfills的打包工具,需要加入相关配置,以webpack为例:<br/>
22-
<p style="margin-top:10px;">首先安装相关Polyfills</p><pre><code>npm i stream-http https-browserify stream-browserify tty-browserify browserify-zlib os-browserify buffer url assert process -D</code></pre>
22+
<p style="margin-top:10px;">首先安装相关Polyfills</p><pre><code>npm i stream-http https-browserify stream-browserify tty-browserify browserify-zlib os-browserify buffer url assert process events util -D</code></pre>
2323
然后配置webpack<pre><code>module.exports: {
2424
resolve: {
2525
alias: {
@@ -33,7 +33,10 @@ import {Util} from "../../commontypes/Util";
3333
os: require.resolve('os-browserify/browser'),
3434
stream: require.resolve('stream-browserify'),
3535
tty: require.resolve('tty-browserify'),
36-
zlib: require.resolve('browserify-zlib')
36+
zlib: require.resolve('browserify-zlib'),
37+
assert: require.resolve('assert'),
38+
util: require.resolve('util'),
39+
events: require.resolve('events')
3740
}
3841
}
3942
plugins: [

src/mapboxgl/mapping/WebMap.js

Lines changed: 15 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,6 @@ import { Lang } from '@supermap/iclient-common/lang/Lang';
1616
import { parseCondition, parseConditionFeature } from '@supermap/iclient-common/util/FilterCondition';
1717
import { Util } from '../core/Util';
1818
import { QueryService } from '../services/QueryService';
19-
import convert from 'xml-js/dist/xml-js.min';
2019
import Canvg from 'canvg';
2120

2221

@@ -89,6 +88,19 @@ const DEFAULT_WELLKNOWNSCALESET = ['GoogleCRS84Quad', 'GoogleMapsCompatible'];
8988
* @fires WebMap#getfeaturesfailed
9089
* @fires WebMap#addlayerssucceeded
9190
* @extends {mapboxgl.Evented}
91+
* @description
92+
* <h3 style="font-size: 20px;margin-top: 20px;margin-bottom: 10px;">Tips</h3>
93+
* 该功能的WMTS地图依赖<a href="https://github.com/nashwaan/xml-js">xml-js</a>, webpack5或其他不包含Node.js Polyfills的打包工具,需要加入相关配置,以webpack为例:<br/>
94+
<p style="margin-top:10px;">首先安装相关Polyfills</p><pre><code>npm i stream-browserify -D</code></pre>
95+
然后配置webpack<pre><code>module.exports: {
96+
resolve: {
97+
mainFields: ['browser', 'main'],
98+
fallback: {
99+
fs: false,
100+
stream: require.resolve('stream-browserify')
101+
}
102+
}
103+
}</code></pre>
92104
* @usage
93105
*/
94106
export class WebMap extends mapboxgl.Evented {
@@ -456,8 +468,8 @@ export class WebMap extends mapboxgl.Evented {
456468
return response.text();
457469
})
458470
.then(capabilitiesText => {
459-
let converts = convert ? convert : window.convert;
460-
let tileMatrixSet = JSON.parse(converts.xml2json(capabilitiesText, { compact: true, spaces: 4 }))
471+
const xml2json = require('xml-js/lib/xml2json');
472+
let tileMatrixSet = JSON.parse(xml2json(capabilitiesText, { compact: true, spaces: 4 }))
461473
.Capabilities.Contents.TileMatrixSet;
462474
if (!Array.isArray(tileMatrixSet)) {
463475
tileMatrixSet = [tileMatrixSet];

0 commit comments

Comments
 (0)