2012-06-17 2 views
4

Я оптимизируя свою requirejs приложение вместе с позвоночником и jquerymobile, следующая моя структура файла:requirejs оптимизатор не удалось загрузить в JQuery

/application 
    /app 
     /models 
     /views 
     /collections 
    /scripts 
     main.js 
     text.js 
     /assets 
      backbone.js 
     /libs 
      /jquery 
       /jquery.js 
       /jquery-mobile.js 
app.js 
r.js 
/public 
    /css 
     /style.css 

В консоли, я попытался запустить Ф.Ф. команду:

node ../r.js -o name=main out=../build.js baseUrl=. paths.models=../app/models paths.app=../app 

Я убедился, что пути хорошо определены и работает должным образом, кроме как с этой ошибкой (это то, что я получаю при выполнении команды):

Tracing dependencies for: main 
Error: Module loading did not complete for: jquery 
    at Function.traceDependencies (/home/dunhak/public_html/my_path/etc/application/r.js:15117:19) 

Большое вам спасибо!

+0

Вы нашли решение на этом? – chrisan

ответ

4

Некоторые из них будут зависеть от порядка загрузки ваших скриптов. Загружается ли jQuery перед require.js или наоборот?

Последние несколько строк JQuery может содержать ключ к решению:

if (typeof define === "function" && define.amd && define.amd.jQuery) { 
    define("jquery", [], function() { return jQuery; }); 
} 

Я предполагаю, что вы делаете что-то вроде:

var $ = require('jquery'); //lower-case Q 

лично я делал :

var $ = require('jQuery'); //upper-case Q 

все это может зависеть от вашего require.config - я использую что-то вроде:

require.config({ 
    baseUrl: "/js", 

    paths : { 
     jQuery: 'lib/jquery-1.7.1.min' 
     //, etc... 
    } 
}) 

Другое дело: вы можете не хотеть, чтобы jQuery включался как часть вашего оптимизированного выхода - вместо этого загрузите предварительно модифицированную версию из CDN (и т. Д.). В этом случае вам необходимо исключить модуль jquery, как описано здесь: http://requirejs.org/docs/jquery.html

modules: [ 
    { 
     name: "main", 
     exclude: ["jquery"] 
    } 
] 
+1

Это отличный помощник !. Я сэкономил много времени. Я понял, что лучше, если я «пуст» пути для библиотек, которые размещаются через CDN, в данном случае jQuery. Я сделал это, я добавил paths.jquery = empty в свою команду. Большое спасибо :) –

Смежные вопросы