Saya telah menyediakan projek menggunakan Vue 3.2.33 dan Vite 2.9.5
Saya mendapat ralat yang tidak ditentukan apabila saya cuba mengakses mana-mana pembolehubah global atau mixin daripada mana-mana komponen vue. Masalah ini tidak berlaku dalam fail scss.
Import itu sendiri nampaknya berfungsi dengan baik, kerana mana-mana peraturan css di dalamnya adalah sah.
vite.config.ts:
import { fileURLToPath, URL } from 'url'; import { defineConfig } from 'vite'; import vue from '@vitejs/plugin-vue'; // https://vitejs.dev/config/ export default defineConfig({ plugins: [vue()], resolve: { alias: { '@': fileURLToPath(new URL('./src', import.meta.url)), }, }, css: { preprocessorOptions: { scss: { additionalData: '@use "@/styles/variables";', }, }, }, });
src/styles/_variables.scss:
// breakpoints $breakpoints: ( "sm": 576px, "md": 768px, "lg": 992px, "xl": 1200px, "xxl": 1400px, ); @mixin test { border: 3px solid red; }
Contoh penggunaan:
<style scoped lang="scss"> @use 'sass:map'; .container { max-width: 100%; width: 100%; margin: 0 auto; @include test; // <- undefined &--fluid { max-width: 100%; width: 100%; } } $widths: ( 'sm': 540px, 'md': 720px, 'lg': 960px, 'xl': 1140px, 'xxl': 1320px, ); @each $breakpoint, $width in $widths { @media (min-width: map.get($breakpoints, $breakpoint)) { // <- $breakpoints undefined .container { max-width: $width; } } } </style>
Gunakan
dalam konfigurasi vite anda sebaliknya
vite.config.ts
:Sila ingat bahawa anda tidak boleh masuk
main.ts
文件中再次导入相同的文件variables.scss
, jika tidak, anda akan mendapat ralat iniBtw, anda juga boleh mengimport fail
scss
secara manual dalam setiap komponen seperti yang anda nyatakan, tetapi ia benar-benar membosankan, jadi gunakan global dalampreprocessorOptions
Importscss
文件,但这确实很乏味,因此在preprocessorOptions
中使用全局导入对于像variables.scss
文件这样全局使用的文件来说,vite.config.ts
ialah pilihan yang lebih baik untuk fail yang digunakan secara global seperti failvariables.scss
.Saya telah berjaya "menyelesaikan" masalah ini. Ternyata apabila saya menggantikan semua kunci
@use
规则时,sass 代码已正确导入并可以工作。但这会产生一个新问题,因为@import
规则不能放在@use
之前,因此我必须从配置中删除additionalData
dalam import fail dan masukkan import secara manual.