'предыдущий ресурс' - это импорт, соответствующий регулярному выражению
да, связанный код: здесь
Я создал демонстрационный проектhttps://github.com/loveky/webpack-NormalModuleReplacementPlugin-demo Вы можете скачать и попробовать
Вот точка останова с использованием демонстрационного проекта.
![enter image description here](https://i.stack.imgur.com/rYx8L.png)
обновление на основе сломанного репо
, если вы измените строку в src/a/b/c/import3.js
с:
import { something } from '../../e/initial.js';
на
import { something } from '../../e/initial';
, то выдолжна быть в состоянии скомпилировать без ошибок.
Почему:
Если вы импортируете ../../e/initial.js
, то в хуке beforeResolve result.request
имеет формат:
"../../e/initial.js"
, который соответствует вашему регулярному выражению /\/e\/initial\.js$/
, а затем плагин обновляет запрос и вызывает ошибку Module not found
.
при импорте ../../e/initial
, который не соответствует /\/e\/initial\.js$/
, так как отсутствует расширение .js
, и это переходит к afterResolve
ловушке, где путь заменяется правильно.
Так что, чтобы это работало, мы должны опустить расширение файлав нашем импортет.Это не задокументировано в документации по плагинам.Возможно, вы можете отправить вопрос на GitHub, чтобы попросить у автора пояснений.
Редактировать:
Если вы работаете в Windows, то разделитель пути будет \
,поэтому, чтобы создать регулярное выражение, работающее на всех платформах, вы можете использовать path.sep
.