Require загружает модуль, даже если он включен в сборку

Я работаю над довольно сложным проектом Require; В основе этого проекта лежит кодовая база стороннего видеоплеера, вокруг которой мы создаем приложение. В настоящее время я работаю над процессом производства, используя оптимизатор Require.

Оптимизатор работает отлично, но когда я использую приложение со "встроенным" JS, Require настаивает на загрузке стороннего модуля, вставив дополнительный скрипт-тег. Я искал скомпилированный JS и подтвердил, что модуль был включен в сборку; все же это, кажется, не распознается во время выполнения.

Для этого модуля требуется сторонний модуль:

define(['models/Widget','amp_lib'], function(Widget) {
    // Housekeeping/configuration
    // Nothing to return here
})

Модуль amp_lib определен в основном конфиге:

require.config({
    paths: {
        amp_lib: 'path/to/module/src'
    }
});

Может кто-нибудь помочь мне понять, как Require определяет, был ли загружен определенный модуль или нет? Я целый день ковыряюсь в самом Require, надеясь выяснить, где принимается это решение, но безрезультатно.

1 ответ

Как указано выше:

Я нашел проблему сегодня. Оказывается, что сторонний модуль, который мы получаем, использует несколько служебных библиотек, одна из которых совместима с AMD и, таким образом, имеет собственную функцию define() при обнаружении загрузчика. Поэтому при сборке оптимизатор определял именно эту библиотеку как модуль, а не всю кодовую базу, что, в свою очередь, вызывало перезагрузку модуля во время выполнения. Извлеченный урок: будьте осторожны с добавлением сторонних материалов в проект Require.

Другие вопросы по тегам