2016-02-23 5 views
-1

Мне нужно выставить более подробную информацию об ошибке из ошибок requireJS «load timeout для модулей», чтобы я мог фактически отлаживать, чтобы узнать, что вызывает таймаут нагрузки.RequireJS Тайм-аут загрузки для модулей: ошибка

Я не могу получить сообщение об ошибке на моей машине разработки, но примерно 10% наших ежедневных посетителей испытывают эту ошибку в рабочей среде (track.js используется для сбора этих ошибок для видимости).

  • Ошибка в файле main.js («load timeout для модулей: main») - точка входа приложения. Я добавил обратный вызов errback, чтобы попытаться зарегистрировать деталь ошибки здесь, но эта ошибка, похоже, не попадает в этот обратный вызов, поэтому кажется, что все, что требуется main.js, прекрасно.
  • Я добавил глобальное переопределение для requirejs.onError, и все, что я получаю здесь, это имя модуля (main.js) и код ошибки таймаута.
  • Я использовал madge и проверил, что нет круговых зависимостей.
  • Я оптимизировал сборку с помощью оптимизатора r.js.
  • Я поставил waitSeconds: 0 в конфигурации требуется (при моем понимании должен отключить тайм-аут полностью)

Как я могу узнать, что модуль, который в настоящее время требуется где-то вниз по линии фактически вызывает тайм-аут? Все, что будет дальше, было бы очень полезно - я нахожу это невероятно трудно отследить. Благодарю.

ответ

0

от самого Джеймса Берка. ..... Однако, если сложность заключается в том, что ваш «основной» занимает много времени для загрузки, этот скрипт содержит вызов requirejs.config() с waitSeconds, и он был загружен с помощью data-main, а затем requirejs.config() не может быть вызвана вовремя, чтобы он был полезен. Для этой проблемы вы можете передать waitSeconds, используя «requirejs в качестве начальной конфигурации».

<script>var requirejs = { waitSeconds: 0 };</script>
<script src="require.js" data-main="main"></script>

Это работало отлично.

0

вы можете установить waitSeconds в конфигурацию requireJS. По умолчанию это 7 секунд. Я не знаю точного ответа на ваш вопрос, но это может быть временным решением. Вероятно, у кого-то из пользователей очень медленный интернет. и этого недостаточно 7 секунд.

Вы можете проверить in in Chrome devTools ->Network tab ->Throtling selector. И выберите, например, «2G regular 450 kb/c». Я предполагаю, что вы увидите эту ошибку. Кроме того, эта ошибка иногда возникала, когда я использовал CDN.

+0

Я забыл упомянуть, что я уже установил waitSeconds в 0. Сетевое дросселирование - хорошая идея. Я установил его на 2G регулярно - интересно, что я видел на сетевой панели скрипт main.js, загруженный без ошибок, но я все же получил таймаут загрузки для модулей: основная ошибка. – cre8ive

+0

Вы нашли решение? @ cre8ive –

+0

Да, от самого Джеймса Берка. ..... Однако если сложность заключается в том, что ваш «основной» занимает много времени до загрузки , этот скрипт содержит вызов requirejs.config() с waitSeconds, и он загружается через основную информацию, затем вызов requirejs.config() может быть вызван , чтобы он был полезен. Для этой проблемы вы можете использовать pass waitSeconds, используя «requirejs в качестве начальной конфигурации». cre8ive

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