У меня есть конфигурация Webpack 4.1, в которой используются разделение кода и имена выходных фрагментов с использованием шаблона, подобного myproj-[name]-[contenthash].chunk.js
.
Я копирую все файлы рабочего комплекта для каждой версии в одну и ту жедиректории на сервере, будучи уверенным (до сих пор), что чанки уникальны, и у меня нет конфликтов.
Сегодня я обнаружил проблему с выпуском новой версии приложения: у меня есть файл с именем myproj-modulex-0bb2f31cc0ca424a07d8.chunk.js
, которыйбыл также сгенерирован со старой версией (в этом суть contenthash, не так ли?).Я ожидаю, что содержимое файла идентично, но это не .
Изменен только один символ (индекс массива).Чанк начинается с ...
(window.webpackJsonp_XXXX=window.webpackJsonp_XXXX||[]).push([[7],{"2d0274e27fde9220edd9"...
... в то время как старая версия использовала ...push([[6],...
.
Одно из отличий новой версии от старых заключается в том, что ядобавлены новые точки разделения кода.
Итак: кажется, что новые точки разделения изменили порядок чанков, но в веб-пакете все еще используется то же сгенерированное имя файла (возможно, потому что contenthash
относится к содержимому модуля области?).
Проблема критическая: когда новый файл копируется на сервер, он перезаписывает старый файл, и поэтому клиент, использующий старую версию, больше не работает, потому что чанк загружен в неправильную позицию в массиве push (я думаю).
Ошибка:
"Error: Loading chunk 6 failed.
(missing: https://.../myproj-xxx-0bb2f31cc0ca424a07d8.chunk.js)"
Есть способ исправить эту проблему, возможно, присвоение имен выдвинутым чанкам, указание порядка или создание разных хэшей?chunkhash
?