Оптимизатор 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 звонки.

Другие вопросы по тегам