我正在Angular 8应用程序中使用mapbox-gl,并试图添加mapbox-gl-draw功能。我已经通过cpm(cpm i @mapbox/mapbox-gl-draw
)安装了它,添加了css文件并添加了两行代码:
buildMap() {
this.map = new mapboxgl.Map({
container: 'map',
style: this.style,
zoom: 10,
center: [this.lng, this.lat]
});
var draw = new MapboxDraw();
this.map.addControl(draw);
}
这会在控制台中产生以下错误:
错误TypeError:_mapbox_mapbox_gl_draw_dist_mapbox_gl_draw__WEBPACK_IMPORTED_MODULE_3 __。MapboxDraw不是构造函数
(应用程序继续运行。)
我只能在网上找到唯一的解决方案,建议我从以下位置更改导入:
import { MapboxDraw } from '@mapbox/mapbox-gl-draw/dist/mapbox-gl-draw';
到
import * as MapboxDraw from 'mapbox-gl-draw';
这需要在npm上使用以下命令重新安装map-gl-draw:
npm i map-gl-draw
重新安装npm时,通知我该命令已被弃用,并由我最初使用的命令代替:
cpm i @mapbox/mapbox-gl-draw
无论安装完成,现在我的应用均无法运行并产生错误:
./ node_modules / jsonlint-lines / lib / jsonlint.js 找不到模块:错误:无法在...中解析“ fs”
这是进展吗?关于解决Angular中的“ fs”错误,存在一些疑问和答案,我已经尝试了一些建议,例如引入自定义Webpack而不成功。我了解默认的Angular webpack不会加载fs。但是,我使用错误的cpm安装来进行此操作的事实使我觉得无论如何我都走错了路。
更新,在我将以下内容引入我的angular.json文件后,它现在可以运行:
"browser": {
"fs": false
}
尽管npm明确指出我现在使用的是不推荐使用的版本,但这一切都让人感到很不舒服。