Мне нужно адаптировать открытый путь к веб-пакету во время выполнения, что возможно с __webpack_public_path__
в соответствии с документацией .Я использую next.js, который генерирует одну точку входа на страницу + точки входа _document.js
, _app.js
и _error.js
, которые вызываются из точек входа страницы.Поскольку __webpack_public_path__
должен быть установлен для каждой из этих точек входа, я использую функциональность массива точек входа *1009*, чтобы вставить короткий файл public-path.js
перед каждым из файлов, на которые есть ссылки в точках входа.Этот файл просто устанавливает __webpack_public_path__
.Вы можете увидеть краткую суть этого здесь .
Пока все хорошо.Но это не работает, как ожидалось.Я отладил код и обнаружил следующие вещи:
Когда мое приложение запускается и запрашивается страница, веб-пакет загружает модули из чанка страницы (где он также правильно загружает public-path.js
иустанавливает __webpack_public_path__
), и при этом загружает необходимые модули из блоков _document.js
, а затем _app.js
.
Пока __webpack_public_path__
правильно установлен, пока код выполняет модулисо страницы чанка, как только он продолжает загружать модули из _document.js
, код инициализации чанка веб-пакета устанавливает __webpack_public_path__
(точнее __webpack_require__.p
во встроенном коде) в пустую строку ""
.
Несмотря на то, что блок _document.js
также пытается загрузить модуль public-path.js
, он больше не устанавливает __webpack_public_path__
, поскольку модуль теперь кэшируется в кэше installedModules
, ипоэтому больше не выполняется (с call
).
Я застрял, и я не уверен, является ли это ошибкой или ограничением.В любом случае, есть предложения по этому поводу?