Вот более подробное объяснение моего комментария выше:
В Webpack каждый модуль (файл) импортирует и экспортирует код.Когда код передается / упаковывается для браузера, каждый из этих модулей помещается в замыкание , что гарантирует, что внутренний код не попадет в другие модули.Это очень важно, в противном случае вам всегда нужно будет убедиться, что вы случайно не перезаписываете переменные или функции из других модулей.
Полагаю, вы ошибочно предположили, что ваш модуль верхнего уровня отличается и чтоэкспортируется в область видимости верхнего уровня (окна) браузера.Это не тот случай!
Консоль браузера работает в основной области, где ваша внутренняя переменная ol_map
неизвестна.Конечно, эта переменная где-то есть, но она где-то внутри некоторой функции (или даже глубже, в подподчиненной ...- функции).Возможно, ваша переменная также была переименована в веб-пакете (чтобы уменьшить объем кода), поэтому даже если вы добавите в код отладочную точку останова, вы можете не сразу распознать вашу переменную (но она есть!).
Однако есть некоторые глобальные вещи, к которым вы можете обратиться изнутри модуля: window
- это объект окна браузера.Это представляет глобальную область.Например, когда вы пишете var x = 'hello';
в консоли, эта переменная x
станет свойством window
.
Поэтому, написав window.ol_map = ol_map
в своем коде, вы создаете глобальную переменную, к которой затем легко получаете доступ в браузере и консоли браузера.