Проблема не в самом вашем коде. Эта проблема немного глубже в том, как Webpack связывает ваш код.
Webpack связывает ваш код и ресурсы и создает совершенно новую структуру папок и / или имен файлов.
Webpack изменит структуру папок, как это:
src
- app.jsx
- components
- - MyComponent.jsx
- assets
- - image.jpg
в:
dist
- main.js
- image.jpg
Весь смысл импорта / экспорта заключается в том, что они имеют статус c. Webpack изменит все ваши пути за кулисами, чтобы они указывали на вновь созданный связанный путь во время процесса объединения. Вот почему ваш первый пример работает гладко. Этот путь был определен до выполнения, поэтому до того, как веб-пакет объединит ваш код.
Однако ...
Динамический c импорт, который обновляется во время выполнения, к пути, который не существует в вашем комплекте кода. Вот почему он выдает ошибку, что не может найти ваш файл. Потому что в этом месте в вашем комплекте кода такого файла просто нет.
К счастью, для этой проблемы существует обходное решение
Как решить эту проблему:
Это можно получить доступ к пути файлов относительно вашего пакета, используя require.context
. Это позволяет вам анализировать ваш относительный путь к объединенному пути и динамически обновлять ваши изображения.
Этот ответ должен быть в состоянии указать вам путь.