Здесь некоторые вещи пошли не так.
import AppLogo from "../assets/logo.svg";
Вы не можете просто импортировать файл .svg в Javascript.Что вы ожидаете, что AppLogo
будет содержать, когда вы импортируете это так?Обычно, когда вы импортируете файл .js, .jsx или .tsx таким образом, где-то в этих файлах указывается export
.Итак, вы знаете, когда вы import
из этого файла, вы получите все, что экспортировали.В .svg нет export
.
Ваше использование также неверно:
<header class="app-header">
<a href="#" class="app-logo">
<img src="{AppLogo}" alt="App Name" />
</a>
</header>
Прежде всего избавьтесь от "
вокруг {AppLogo}
.Вы хотите использовать значение из {AppLogo}
- не использовать строку, содержащую {AppLogo}.
Теперь есть два способа достичь того, что вы хотите:
Способ использования ресурсов
Где-то в корневом каталоге вашего проекта находится файл stencil.config.ts
.Там вы можете указать задачи копирования.Вы можете прочитать здесь, как это сделать: https://stenciljs.com/docs/config#copy
После правильной настройки и копирования папки ../assets/
в папку build
вы можете просто использовать изображение, вставивпуть в качестве источника:
<header class="app-header">
<a href="#" class="app-logo">
<img src="./assets/logo.svg" alt="App Name" />
</a>
</header>
Путь свертки
Вы также можете использовать сведение для его импорта.Трафарет использует Rollup в качестве модуля связывания.stencil.config.ts
- это в основном файл rollup.config.Вы можете найти много документации о накопительном пакете здесь: https://rollupjs.org/guide/en#configuration-files
Существует несколько подключаемых модулей, поддерживающих импорт файлов .svg:
- rollup-plugin-svg
- rollup-plugin-svgo
- rollup-plugin-svg-to-jsx
Если вы используете любой из них, вы сможете import
ваш .svgфайлы.В зависимости от того, какой плагин вы используете, AppLogo
будет содержать что-то другое.
Например, rollup-plugin-svg-to-jsx предоставит вам готовый к использованию JSX-тег при импорте.Поэтому после того, как вы сделаете
import AppLogo from "../assets/logo.svg";
, вы сможете использовать его как:
<header class="app-header">
<a href="#" class="app-logo">
<AppLogo />
</a>
</header>