Я использую StealJS для загрузки библиотеки Openlayers. Похоже, отладочная версия Openlayers загружается иначе, чем встроенная версия.
При использовании встроенной версии он работает правильно и возвращает фактический объект ol. При использовании отладочной версии возвращается объект-оболочка, содержащий ol. Это прерывает все вызовы ol.map и т. д.
Я импортирую файл ol следующим образом:
import ol from 'openlayers';
Это объект ol-debug.js, возвращаемый с помощью console.log в chrome:
{
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 вложен в родительский объект.