2014-02-20 2 views
2

20% времени, скрипты терпят неудачу при загрузке при использовании RequireJS.RequireJS не всегда загружает модули

Дополнительные файлы, которые я использую в приложении, требуют, кроме JS-библиотек, файла base.js, который содержит конфигурации и некоторую настройку для подчеркивания & backbone. Без этих настроек другие файлы не будут работать.

Тег сценария в следующий:

<script data-main="http://*path*/js/common" src="http://*path*/js/lib/require.js"></script> 

common.js файл

requirejs.config({ 
    shim: { 
     underscore: { 
      exports: "_" 
     }, 
     backbone: { 
      deps: ["jquery", "underscore"], 
      exports: "Backbone" 
     }, 
     base: { 
      deps: ["backbone"] 
     } 
    }, 
    paths: { 
     jquery: [ 
      '//ajax.googleapis.com/ajax/libs/jquery/1.8.2/jquery.min', 
      'http://*path*/media/admin/js/lib/jquery.min' 
     ], 
     base: 'http://*path*/media/admin/js/base', 
     backbone: 'http://*path*/media/admin/js/lib/backbone', 
     underscore: 'http://*path*/media/admin/js/lib/underscore' 
} 

});

base.js файл с настройками для позвоночника, подчеркивание и JQuery, содержит:

define(['jquery', 'backbone', 'underscore'], function(jQuery, Backbone, _) { 
    //CODE 
    return var; 
}); 

И другие файлы содержат

define(['base'], function(var) { 
    //CODE 
}); 

На странице я нагружал файлы с помощью :

require(['common'], function() { 
    require(['page/file'], function() { 
     //CODE 
    }); 
}); 

Что я делаю неправильно, почему jQuery, подчеркивание и магистральная сеть не могут иногда загружаться Как я могу это исправить?

Сообщение об ошибке:

GET http://*host*/backbone.js 404 (Not Found) require.js:1 

Uncaught Error: Script error for: backbone 
http://requirejs.org/docs/errors.html#scripterror 
+2

Почему вы возвращаете var? Неужели это вызывает ошибку? –

+0

Не могли бы вы высказать точное сообщение об ошибке? –

ответ

2

Я не знаю, что это только проблема, но эта прокладка должна быть удалена:

base: { 
    deps: ["backbone"] 
} 

Вы показали base.js файл который вызывает define. Правило простое: если ваш модуль вызывает define, вы используете define для установки зависимостей и возвращаемого значения функции, которую вы передаете, до define, чтобы установить значение вашего модуля; если ваш модуль делает не, вызовите define, тогда вам потребуется прокладка, чтобы установить зависимости и определить значение модуля (при необходимости).

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