Получение множественной ошибки (dojoloader) при попытке использовать esrimap
Я использую угловой 1.6 и Аргис 4.4 для загрузки esri-map. Я использовал ключевое слово defer для загрузки angular-esri-map.js, но это не сработало. Я могу успешно отрисовать esri-map в приложении SPA. Но когда я пытаюсь интегрировать его в наше корпоративное приложение, это просто перерывы.
Я загружаю JS следующим образом =>
<script src="assets/angular.js"></script>
<script src="https://js.arcgis.com/4.4/"></script>
<script defer src="assets/angular-esri-map.js"></script>
Следующие зависимости я добавил в нашем приложении =>
'ngAnimate',
'ngCookies',
'ui.router',
'esri.map',
'ngSanitize',
'ngTouch',
'angular-carousel',
'd3'
На следующем рисунке показаны журналы, где он ломается =>
Было бы очень полезно, если бы кто-то помог исправить эту ошибку "множественного определения" dojoloader.
1 ответ
Я думаю, что у загрузчика AMD dojo конфликт с другим загрузчиком. Но есть способ предотвратить это. Следующий код "перемещает" конфликтующий загрузчик Dojo amd в другой временный метод, и после загрузки всех других сценариев это восстанавливается.
Добавьте это сразу после загрузки dojo.js на страницу (в заголовке):
<script type="text/javascript">if (typeof define === 'function' && define.amd) {if(define.amd.vendor =='dojotoolkit.org'){define._amd = define.amd;delete define.amd;}</script>
А затем загрузите все остальные сценарии, как вы добавили в свой вопрос. Затем, когда все скрипты загружены, добавьте этот скрипт:
<script type="text/javascript">if (typeof define === 'function' && define._amd) {define.amd = define._amd; delete define._amd;}</script>
После этого все должно работать правильно.