На этот вопрос уже отвечали много раз, и я знаю, что одно из решений - просто изменить его, чтобы додзё (Esri) загружалось последним.
Проблема в том, что я работаю над модульным виджетом, у которого нет доступа к HTML-коду страницы для изменения порядка, я должен загружать библиотеки только через AMD Loader Dojo.
Структура папки:
/Widget
--/Main.js
--/Datatable.js
Это файл Main.js:
define([
'./Datatable',
'https://code.jquery.com/jquery-3.3.1.min.js',
'https://stackpath.bootstrapcdn.com/bootstrap/4.1.1/js/bootstrap.bundle.js',
],
function(Datatable){ ... }
И Datatable.js (просто еще один модуль, который я создал для организации):
define([
'https://cdn.datatables.net/v/bs4/dt-1.10.18/r-2.2.2/datatables.min.js'
],function(){ ... }
У меня есть две основные проблемы здесь;
1) Загрузчик AMD является асинхронным и не разрешает зависимости от модулей, отличных от AMD, а это означает, что порядок должен быть важен.
datatables.min.js
требует bootstrap.bundle.js
, для которого требуется jquery-3.3.1.min.js
Итак, если мне повезет, запрос будет загружаться по порядку в зависимости от задержки, что не очень надежно...
2) Общие файлы javascript Bootstrap и Datatable вызывают ошибку «multipleDefine», вероятно, из-за того, что они пытаются определить «jquery», я действительно не уверен, как это исправить (иметь локальную отредактированную копию их не было бы идеальным )
Как я могу решить эти 2 проблемы?