#javascript #svg #nuxt.js #vite
Вопрос:
Я не могу загрузить SVG с помощью @nuxtjs/svg
. Я правильно добавил модуль сборки в nuxt.config.js
файл, и они все еще не загружаются. Я видел, как некоторые разработчики жаловались, что это может быть связано с ViteJS, поэтому я также добавил vite-svg-loader
зависимость, но у меня есть эта ошибка:
__vite_ssr_import_0__.createElementVNode is not a function
Вот мое nuxt.config.js
досье
import svgLoader from 'vite-svg-loader'
import { APP_NAME, APP_LANG, APP_ROOT_ID } from "./constants";
export default {
// Global page headers: https://go.nuxtjs.dev/config-head
head: {
title: APP_NAME,
htmlAttrs: {
lang: APP_LANG,
},
meta: [
{ charset: 'utf-8' },
{ name: 'viewport', content: 'width=device-width, initial-scale=1' },
{ hid: 'description', name: 'description', content: '' },
{ name: 'format-detection', content: 'telephone=no' }
],
link: [
{ rel: 'icon', type: 'image/x-icon', href: '/favicon.ico' }
]
},
globals: {
id: globalName => APP_ROOT_ID,
},
// Global CSS: https://go.nuxtjs.dev/config-css
css: [
'@/assets/styles/main.scss',
'@/assets/styles/variables.scss',
],
// Plugins to run before rendering page: https://go.nuxtjs.dev/config-plugins
plugins: [
],
// Auto import components: https://go.nuxtjs.dev/config-components
components: {
dirs: [
'~/components',
'~/components/pages',
'~/components/ui',
],
},
// Modules for dev and build (recommended): https://go.nuxtjs.dev/config-modules
buildModules: [
// https://go.nuxtjs.dev/eslint
'@nuxtjs/eslint-module',
// https://go.nuxtjs.dev/tailwindcss
'@nuxtjs/tailwindcss',
'@nuxtjs/svg',
'@nuxtjs/style-resources',
'nuxt-vite'
],
// Modules: https://go.nuxtjs.dev/config-modules
modules: [],
// Build Configuration: https://go.nuxtjs.dev/config-build
build: {
extend(config, ctx) {
config.module.rules.push({
test: /.svg$/,
loader: 'file-loader',
});
},
},
styleResources: {
scss: '@/assets/styles/mixins.scss',
},
vite: {
ssr: false,
plugins: [svgLoader()],
css: {
preprocessorOptions: {
scss: {
additionalData: '@import "@/assets/styles/mixins.scss";',
},
},
},
},
}
И вот как я загружаю свои SVG :
Значок.vue
<template>
<component :is="icon"/>
</template>
<script>
import * as icons from "~/assets/images/icons";
export default {
props: [ 'name' ],
computed: {
icon() {
return icons[this.name]
}
},
}
</script>
Использование :
<template>
<Icon name='add' />
</template>
С уважением,