Maison > Questions et réponses > le corps du texte
Bonjour, j'ai du mal à importer des svgs en ligne dans mon projet nuxt3 vite. Tout avis serait grandement apprécié.
J'ai trouvé ceci qui fonctionne
但是我需要一个内联项目。所以我会做这样的事情
setup(props) { const currentIcon = computed(() => { return defineAsyncComponent(() => import(`~/assets/images/icons/push-icon-chatops.svg'?inline`) ); }).value; return { currentIcon, }; },
Mais j'ai trouvé que la façon dont vite est importé est étrange, le résultat est soit la chaîne url affichée en v-html, soit un objet illisible
J'essaie d'utiliser ce plugin mais sans succès.
https://github.com/nuxt-community/svg-module
P粉2695300532023-11-05 12:52:21
Pour le projet TS Nuxt 3, la situation est la suivante.
nuxt.config.ts
Fichier :
import svgLoader from 'vite-svg-loader' export default defineNuxtConfig({ // Rest of your config. vite: { plugins: [ svgLoader({ // Your settings. }), ], }, })
Exemple de composant :
<template> <div> <ArrowLeft /> </div> </template> <script setup lang="ts"> import ArrowLeft from '../assets/svg/arrow-left.svg?component' </script>
Il est important de noter le dernier ?component
, sinon TS signalera une erreur.
Documentation du plug-in : vite-svg-loader
P粉2425357772023-11-05 12:34:07
Il semble que vite soit en fait incompatible avec le @nuxtjs/svg
plugin. La réponse est donc d'installer un plugin spécifique à vite, dans ce cas j'ai installé le plugin vite puis j'ai fait ceci
vite: { plugins: [ svgLoader() ] },