Я использую RequireJS 2.2.0 для моего проекта со следующей конфигурацией:RequireJS оптимизатор - Oracle MapViewer имеет более чем один анонимный определить
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. Я использую их версию, поэтому я определил зависимости Kendo и jQuery-UI в прокладке. oraclemaps имеет компонент, который требует jquery-ui, colorpicker, eye, layout, and utils
в указанном порядке. Это я также определил в прокладке. Приложение работает хорошо.
Проблема теперь в оптимизации. Используя конфигурацию, я получил ошибку oraclemapsv2.js has more than one anonymous define
. Я googled, и я обнаружил, что это issue jQuery Hammer (который включен в oraclemaps). Запуск приложения приводит к mismatched anonymous define() module
.
Я пробовал положить oraclemaps в 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"
})
Что я должен делать? Есть идеи?
Можете ли вы рассказать мне, как добавлять имена в анонимный модуль? Вот, например, часть для Хаммера. a.Hammer = e, "undefined"! = typeof module && module.exports && (module.exports = e), "function" == typeof define && define.amd? define (["jquery"], function (b) {return d (a.Hammer, b)}): d (a.Hammer, a.jQuery || a.Zepto) – springrolls
Вам просто нужно добавить имя в качестве первый параметр. Что-то вроде 'define (" Hammer ", [" jquery "], ...' – Louis
Я попытался загрузить свой собственный jQuery и установить noConflict в true, но это не сработало. – springrolls