Я пытаюсь диагностировать проблему, которая недавно возникла у нас после обновления нашего поддерживаемого браузера (~ 40 -> ~ 60)
У нас есть этот эффективный код во внешней (теперь не поддерживаемой) библиотеке, которая находится в iffe:
(function(window, undefined){
# external library
if(!window.terribleIdea){
window.terribleIdea = {}
}
<some code>
if(!window.terribleIdea.config.url){
window.terribleIdea.config.url = 'the wrong url'
}
localStorage.set('somethingImportant', getStuff(window.terribleIdea.config.url))
})( window );
Теперь у нас был файл типа начальной загрузки, который выглядел так:
# appBootstrapper.js
import applyConfig from './app/configApplier';
import ALL_ANGULAR_MODULES from './app'; # contains angular.module set up for
# app and every dependency
fetchConfig()
.then(applyConfig)
.then () => angular.bootstrap(document, [ALL_ANGULAR_MODULES])
.catch( error => {
alert(`It borked: ${error.message}`)
});
Среди прочего applyConfig
делает:
window.terribleIdea = {
config: {
url: 'not terrible'
}
}
Что теперь происходит, так это то, что оператор импорта ALL_ANGULAR_MODULES завершает выполнение кода во внешней библиотеке и установку локального хранилища. Мы думаем, что имел обыкновение случаться, что он вызывался только при angular.bootstrap
работающем.
Теперь мне нужно выяснить, изменилась ли функциональность оператора import в более поздней версии Chrome или он всегда выполнял этот код и оставался незамеченным?
Все, что я могу найти, - это ссылки на Динамический импорт и порядок выполнения сценариев в тегах <script></script>
.