Плагин Webpack 5: нет записи генерации кода для ошибки модуля
При обновлении плагина, который я поддерживаю для поддержки как Webpack 4, так и 5, я наткнулся на следующую кирпичную стену, по которой я вообще не могу найти никакой информации, и никто в Gitter, похоже, тоже не может помочь.
Плагин добавляет актив (карту спрайтов SVG) в
compilation.assets
который работает без проблем. В плагине есть функция, которая позволяет пользователям сохранять созданный блок, который необходим для взаимодействия с некоторыми другими плагинами. Минимальный рабочий код для Webpack 4 будет примерно таким (и мне всегда казалось немного взломанным, но он работал ♂️):
// OutputOptions.chunk.name would equal 'spritemap' in this example
const chunk = compilation.addChunk(outputOptions.chunk.name);
const module = new RawModule('', `${outputOptions.chunk.name}-dummy-module`);
chunk.addModule(module);
Использование того же подхода с Webpack 5 вызывает следующую ошибку:
ERROR in spritemap.js
No code generation entry for spritemap-dummy-module (existing entries: <path-to>/svg-spritemap-webpack-plugin/examples/simple/src/index.js)
Он также показывает предупреждение об устаревании для
Chunk.addModule
что я могу исправить, используя
compilation.chunkGraph.connectChunkAndModule(chunk, module);
вместо этого, но это (очевидно) не избавляет от ошибки ввода генерации кода.
1 ответ
В итоге я отправил тот же вопрос, что и проблема GitHub, так как я не получал никаких ответов на Gitter и stackru. Тобиас Копперс подтолкнул меня в правильном направлении, предложив убедиться, что модуль был добавлен в
compilation.modules
. В итоге эта конкретная проблема была решена с помощью следующего кода:
compilation.modules.add(module);