Как установить __webpack_public_path__ для каждой точки входа - PullRequest
0 голосов
/ 15 июня 2019

Мне нужно адаптировать открытый путь к веб-пакету во время выполнения, что возможно с __webpack_public_path__ в соответствии с документацией .Я использую next.js, который генерирует одну точку входа на страницу + точки входа _document.js, _app.js и _error.js, которые вызываются из точек входа страницы.Поскольку __webpack_public_path__ должен быть установлен для каждой из этих точек входа, я использую функциональность массива точек входа *1009*, чтобы вставить короткий файл public-path.js перед каждым из файлов, на которые есть ссылки в точках входа.Этот файл просто устанавливает __webpack_public_path__.Вы можете увидеть краткую суть этого здесь .

Пока все хорошо.Но это не работает, как ожидалось.Я отладил код и обнаружил следующие вещи:

  1. Когда мое приложение запускается и запрашивается страница, веб-пакет загружает модули из чанка страницы (где он также правильно загружает public-path.js иустанавливает __webpack_public_path__), и при этом загружает необходимые модули из блоков _document.js, а затем _app.js.

  2. Пока __webpack_public_path__ правильно установлен, пока код выполняет модулисо страницы чанка, как только он продолжает загружать модули из _document.js, код инициализации чанка веб-пакета устанавливает __webpack_public_path__ (точнее __webpack_require__.p во встроенном коде) в пустую строку "".

  3. Несмотря на то, что блок _document.js также пытается загрузить модуль public-path.js, он больше не устанавливает __webpack_public_path__, поскольку модуль теперь кэшируется в кэше installedModules, ипоэтому больше не выполняется (с call).

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...