Ошибка: defineAlreadyDefined после применения сборки dojo
Я создал собственный профиль сборки, следуя инструкциям на http://www.sitepen.com/blog/2012/06/11/dgrid-and-dojo-nano-build/. Я создал загрузочный слой для додзё:
'dojo/dojo': {
include: ['dojo/dojo', 'dojo/domReady', 'dojo/_base/declare'],
boot: true,
customBase: true
},
Я также заметил, что если я пропущу определение этого слоя, будет создан более крупный пакет dojo, поэтому модули, включенные во второй слой, будут продублированы.
Второй слой содержит модули GridX, элементы управления dijit и все остальное из Dojo, которое используется:
'dojo/dojo-all': {
include: ["dojo/on", "dojo/dom-attr", "dojo/dom-class", "dojo/query", "dojo/_base/lang", "dojo/request/xhr", "dojo/parser", "dojo/_base/connect", "dojo/DeferredList", "dojo/store/Memory", "dojo/store/Observable",
"dijit/registry","dijit/form/TextBox", "dijit/form/Textarea", "dijit/form/ComboBox", "dijit/form/FilteringSelect", "dijit/form/CheckBox", "dijit/form/Button",
"gridx/core/model/cache/Sync", "gridx/Grid", "gridx/modules/SingleSort", "gridx/modules/ColumnResizer", "gridx/modules/Pagination", "gridx/modules/pagination/PaginationBar", "gridx/modules/CellWidget", "gridx/modules/Edit", "gridx/modules/Persist", "gridx/modules/Filter", "gridx/modules/filter/FilterBar", "gridx/modules/filter/QuickFilter", "gridx/modules/HiddenColumns"],
exclude: ['dojo/dojo', 'dojo/domReady', 'dojo/_base/declare'],
boot: true,
customBase: false
},
Приложение запускается правильно и выполняет только запрос к многоуровневым ресурсам, однако в консоли FireBug есть ошибка:
Ошибка: defineAlreadyDefined makeError() dojo-all.js (Zeile 28)
Я думаю, это потому, что declare
модуль загружается дважды: сначала с помощью начальной загрузки dojo.js, определенной из файла HTML. Во-вторых, из слоя dojo-all.js, загружаемого динамически через require.
Должен быть какой-то поток в моем подходе, основанном на цитируемой статье, или статья адаптирована к более старой версии Dojo (я использую версию 1.9).
В чем здесь ошибка? Как правильно определить слои? Как я могу дать команду сборке dojo не перезаписывать загрузочную версию dojo.js? Или исключение объявлено неправильно - если да, то как оно должно быть объявлено?
1 ответ
Настройка boot: true
вызывает загрузчик. Только установить boot: true
на слое, который вы хотите включить define
функция.