RequireJS - загрузка уже загруженного модуля - PullRequest
7 голосов
/ 27 января 2011

Я пытаюсь использовать RequireJS для загрузки модулей браузера, и у меня возникла интересная проблема.

У меня есть 3 модуля с именами a, b и c, имеющиеэто простой исходный код:

a.js

define(['./b', './c'], function(c, b) {
 console.log('A IS LOADED!');

 return 'A';
});

b.js

define(function() {
 console.log('B IS LOADED!');

 return 'B';
});

c.js

define(function() {
 console.log('C IS LOADED!');

 return 'C';
});

Когда я загружаю модуль a сам по себе, все работает нормально, следующий код запускается и возвращает 'A':

require(['./a'], function(a) { 
    console.log(a); // 'A'
});

Но если мне нужны два разных модуля, один из которых уже был загружен:

require(['./a', './c'], function(a, c) { 
    console.log(a, c);
});

RequireJS выдаст ошибку:

C IS LOADED!
B IS LOADED!
require.js load timeout for modules: ./c 

, когда он, очевидно, уже загружен.

Кто-нибудь сталкивался с этой проблемой раньше?Как я могу решить это?

1 Ответ

0 голосов
/ 14 декабря 2011

По данным веб-сайта RequireJS (http://requirejs.org/docs/errors.html#timeout):

Вероятные причины и исправления:

  • Произошла ошибка скрипта в одном из перечисленных модулей. Если в консоли ошибок браузера нет ошибки сценария, и если вы используете Firebug, попробуйте загрузить страницу в другом браузере, например, Chrome или Сафари. Иногда ошибки скрипта не отображаются в Firebug.

  • Неправильная конфигурация пути для модуля. Проверьте вкладку «Сеть» или «Сеть» в инструментах разработчика браузера, чтобы увидеть, было ли 404 для URL, который будет сопоставлен с именем модуля. Убедитесь, что Файл скрипта находится в нужном месте. В некоторых случаях вам может понадобиться конфигурация путей для исправления разрешения URL для скрипта.

...