Оптимизатор RequireJS - Oracle MapViewer имеет более одного анонимного определения
Я использую RequireJS 2.2.0 для моего проекта со следующей конфигурацией:
require.config({
baseUrl: "Scripts/js/kendo",
paths: {
"kendo.datepicker.min": "kendo.datepicker.min",
"jquery-ui": "../../lib/jquery-ui.min",
"modules": "../../modules",
"colorpicker": "../../lib/colorpicker",
"eye": "../../lib/eye",
"layout": "../../lib/layout",
"utils": "../../lib/utils",
"oraclemaps": "../../lib/oraclemapsv2"
},
shim: {
"kendo.datepicker.min": ["oraclemaps"],
"jquery-ui": ["oraclemaps"],
"colorpicker": ["jquery-ui"],
"eye": ["colorpicker"],
"layout": ["eye"],
"utils": ["layout"]
}
});
oraclemaps
сторонняя библиотека, включающая jQuery. Я использую их версию, поэтому в shim я определил зависимости Kendo и jQuery-UI. oraclemaps имеет компонент, который требует jquery-ui, colorpicker, eye, layout, and utils
в указанном порядке. Это я определил и в шиме. Приложение работает хорошо.
Проблема теперь с оптимизатором. Используя конфигурацию, я получил ошибку oraclemapsv2.js has more than one anonymous define
, Я погуглил его и обнаружил, что это проблема jQuery Hammer (которая включена в oraclemaps). Запуск приложения приводит к mismatched anonymous define() module
,
Я пытался положить оракул карты в exclude/excludeShallow
и загрузив его в HTML, но я получил Script error for "jquery", needed by: jquery-ui, kendo.core.min
,
Вот моя конфигурация оптимизатора:
({
baseUrl: "../js/kendo",
paths: {
"kendo.datepicker.min": "kendo.datepicker.min",
"jquery-ui": "../../lib/jquery-ui.min",
"modules": "../../modules",
"colorpicker": "../../lib/colorpicker",
"eye": "../../lib/eye",
"layout": "../../lib/layout",
"utils": "../../lib/utils",
"oraclemaps": "../../lib/oraclemapsv2"
},
shim: {
"kendo.datepicker.min": ["oraclemaps"],
"jquery-ui": ["oraclemaps"],
"colorpicker": ["jquery-ui"],
"eye": ["colorpicker"],
"layout": ["eye"],
"utils": ["layout"]
},
include: ["../../lib/require.min"],
exclude: ["oraclemaps"],
name: "../../app",
out: "../build/app-built.js"
})
Что я должен делать? Есть идеи?
1 ответ
Там нет ничего r.js
оптимизатор может сделать, чтобы понять файлы, которые содержат несколько анонимных define
звонки.
Вы должны найти сборку oraclemaps
это не включает в себя несколько анонимных define
звонки. (Это означает, что вы должны получить jQuery и средство выбора даты Kendo, где oraclemaps
.) Если такая сборка недоступна, вы можете обработать oraclemaps
вырвать лишние модули. Или вы можете обработать это так, чтобы добавить имена к define
звонки.