В нашем проекте Webpack Мы используем условный импорт для загрузки некоторых файлов после загрузки основного модуля. Это прекрасно работает при загрузке приложения в том же домене, но если скомпилированная библиотека включена приложением, размещенным в другом домене, то основной модуль будет пытаться загрузить выделенный файл JS из домена приложения, а не из домен, в котором размещена библиотека.
Например, у нас есть скомпилированная библиотека JS, размещенная на http://my-example-lib.com, и приложение, которое использует библиотеку, размещенную на http://some-sweet-app.com
В используемом нами коде:
import("some-dependencey").then(() => {
import("./other-dependencies").then(() => {
logger.log("javascript loaded");
})
});
... при компиляции Webpack разделится на два пакета:
bundle.js
который мы добавляем в тег скрипта в приложении на http://some-sweet-app.com 0.bundle.js
, который затем загружается на bundle.js
, потому что мы использовали условный оператор импорта.
Проблема в том, что импорт http://my-example-lib.com/bundle.js в порядке, но тогда bundle.js
будет ошибочно пытаться получить 0.bundle.js
из http://some-sweet-app.com/0.bundle.js
Я обнаружил, что добавление тега <base href = "http://my-example-lib.com" />
перед тегом сценария для bundle.js
приведет к решить проблему, но мы бы хотели более чистое исправление, которое не требует, чтобы пользователь библиотеки делал это.