Проблема с настройкой оптимизатора RequireJS, релиз bbb
Я использую RequireJS, базовый шаблон с менеджером макетов, JamJS, чтобы помочь управлять пакетами, и все отлично работает в разработке, но когда я пытаюсь создать рабочую версию с объединенными файлами, это не работает.
Похоже, shim
в моей конфигурации не может быть загружен. Например, ошибка, которую я получаю в своей консоли: Uncaught TypeError: Cannot set property 'cookie' of undefined
, поэтому jQuery не загружается как зависимость для jquery.cookie. Вот мой конфиг приложения:
// Set the require.js configuration for your application.
require.config({
// Initialize the application with the main application file and the JamJS
// generated configuration file.
deps: ["../vendor/jam/require.config", "main"],
paths: {
baseUrl : '/',
config : "config",
// JavaScript folders.
api : "libs/api",
app : "app",
// Libraries.
almond : "../vendor/jam/js/libs/almond",
engagement : "libs/engagement",
environment : "libs/environment",
jquery : "../vendor/jam/jquery/jquery",
jqueryui : "../vendor/js/libs/jquery-ui-1.9.1.custom.min",
"jquery-cookie" : "../vendor/jam/jquery-cookie/jquery.cookie",
chosen : "../vendor/js/libs/jquery.chosen.min",
colorpicker : "../vendor/js/libs/jquery.colorpicker",
bootstrap : "../vendor/js/libs/bootstrap",
jqueryuiwidget : "../vendor/js/libs/jquery.ui.widget",
jstemplates : "../vendor/js/libs/tmpl",
jsloadimage : "../vendor/js/libs/load-image",
jscanvastoblob : "../vendor/js/libs/canvas-to-blob",
iframetransport : "../vendor/js/libs/jquery.iframe-transport",
fileupload : "../vendor/js/libs/jquery.fileupload",
fileuploadfp : "../vendor/js/libs/jquery.fileupload-fp",
fileuploadui : "../vendor/js/libs/jquery.fileupload-ui",
fileuploadlib : "libs/fileupload",
highchartsgraytheme : "../vendor/js/libs/gray",
highchartsexporter : "../vendor/js/libs/exporting",
adpin : "libs/adpin",
val : "../vendor/js/libs/jquery.validate.min",
valmethods : "../vendor/js/libs/additional-methods.min",
advertiser : "libs/advertiser",
messages : "libs/messages",
user : "libs/user",
zeroclipboard : "../vendor/js/libs/zero-clipboard",
jqgrid : "../vendor/js/libs/jquery.jqGrid.min",
jqgridsource : "../vendor/js/libs/grid.locale-en",
reporting : "libs/reporting",
adlift : "libs/adlift",
utilities : "libs/utilities",
qrcode : "../vendor/js/libs/jquery.qrcode.min",
base64 : "../vendor/js/libs/base64",
kinetic : "../vendor/js/libs/kinetic.min",
canvaslib : "libs/canvas",
socialstream : "libs/socialstream",
analytics : "libs/analytics",
classie : "../vendor/js/libs/classie",
classie_modernizr : "../vendor/js/libs/modernizr.custom",
qtip2 : "../vendor/js/libs/jquery.qtip",
sponsored : 'libs/sponsoredcontent',
publisher : 'libs/publisher',
xml : '../vendor/jam/codemirror3/mode/xml/xml'
},
shim: {
"jquery-cookie" : {
deps : ["jquery"]
},
"api" : {
deps : ["environment"]
},
"xml" : {
deps : ["codemirror3"]
},
"classie" : {
deps : ["classie_modernizr"]
},
"jqueryui" : {
deps : ["jquery"]
},
"colorpicker":{
deps : ["jquery"]
},
"jqueryuiwidget" : {
deps : ["jquery"]
},
"jstemplates" : {
deps : ["jquery"]
},
"jsloadimage" : {
deps : ["jquery"]
},
"jscanvastoblob" : {
deps : ["jquery"]
},
"fileupload" : {
deps : ["jquery", "jqueryuiwidget"]
},
"fileuploadfp" : {
deps : ["jquery", "jscanvastoblob", "fileupload"]
},
"fileuploadui" : {
deps : ["jquery", "jstemplates", "jsloadimage", "fileuploadfp", "fileuploadlib"]
},
"qrcode" : {
deps : ["jquery"]
},
"base64" : {
deps : ["jquery"]
},
"highchartsgraytheme" : {
deps : ["highcharts"]
},
"highchartsexporter" : {
deps : ["highcharts"]
},
"utilities" : {
deps : ["lodash", "jquery", "val"]
},
"val" : {
deps : ["jquery"]
},
"valmethods" : {
deps: ["jquery", "val"]
},
"zeroclipboard": {
deps : ["jquery"]
},
"jqgrid" : {
deps : ["jquery", "jqgridsource"]
},
"jqgridsource" : {
deps : ["jquery"]
},
"bootstrap" : {
deps : ["jquery"]
}
}
});
Вот как я загружаю свой файл require.js:
<script data-main="/app/config" src="/dist/debug/require.js"></script>
Любые идеи о том, что может происходить? Когда я использую bbb release
все завершается без ошибок, чтобы создать этот файл отладки.
2 ответа
У меня есть некоторые предложения, это может показаться глупым, но, поскольку у меня нет рук в работе с файлами, думаю, лучшее, что я могу сделать, поэтому убедитесь, что нет: define(["jquery"], .....
в вашем файле jquery-cookie, потому что вы должны либо включить его в shim, либо в это определение, но не в оба, потому что это может вызвать конфликт. если это сработало, дайте мне знать, чтобы добавить объяснение того, почему это произошло, удачи.
Эван, я точно не знаю, в чем твоя проблема. Для этого я бы порекомендовал отойти от JamJS в пользу Бауэра. Кто знает, может быть, сборка в Jam обанкротилась.
Ваша шимма выглядит правильно, но мне интересно, если у вас есть mainConfigFile
опция установлена в вашем Gruntfile.js
файл под requirejs
раздел.
bbb
команда устарела, поэтому я бы посоветовал вам изучить https://github.com/backbone-boilerplate/backbone-boilerplate/wiki/Installation, наш генератор должен удовлетворит ваши потребности!