0

我正在使用 StealJS 加载 Openlayers 库。它似乎正在加载调试 - 未构建版本的 openlayers 与构建版本不同。

使用内置版本时,它可以正常工作并返回实际的 ol 对象。使用调试版本时,它返回一个包含 ol 的包装器对象。这会中断对 ol.map 等的所有调用。

我正在像这样导入 ol 文件:

import ol from 'openlayers';

这是在 chrome 中使用 console.log 返回的 ol-debug.js 对象:

{
CLOSURE_NO_DEPS: true
COMPILED: false
goog: Object
module: undefined
ol: Object //this is the object I want
__proto__: Object
}

使用构建版本,对象是包含动画、地图、图层等的实际 ol 对象。

使用 npm 配置:

"npmIgnore": [
  "openlayers"
],
"paths": {
  "openlayers": "node_modules/openlayers/dist/ol-debug.js"
},
"meta": {
  "openlayers": {
    "format": "global"
  }
},

如果没有文件的调试版本,调试应用程序真的很困难。切换到调试版本会破坏所有小部件,因为 ol.map 现在需要变为 ol.ol.map,因为 ol 嵌套在父对象中。

4

1 回答 1

0

解决方案是添加一个导出属性:

"meta": {
  "openlayers": {
    "format": "global",
    "exports": "ol"
  }
},
于 2016-06-22T19:19:28.010 回答