Rumah > Soal Jawab > teks badan
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>
P粉2054755382024-03-20 14:34:07
Gunakan
@import
dalam konfigurasi vite anda sebaliknya
@use
vite.config.ts
:
export default defineConfig({ plugins: [vue()], css: { preprocessorOptions: { scss: { additionalData: '@import "./src/styles/variables.scss";', }, }, }, });
Sila ingat bahawa anda tidak boleh masuk main.ts
文件中再次导入相同的文件 variables.scss
, jika tidak, anda akan mendapat ralat ini
[sass] This file is already being loaded.
Btw, anda juga boleh mengimport fail scss
secara manual dalam setiap komponen seperti yang anda nyatakan, tetapi ia benar-benar membosankan, jadi gunakan global dalam preprocessorOptions
Import scss
文件,但这确实很乏味,因此在 preprocessorOptions
中使用全局导入对于像 variables.scss
文件这样全局使用的文件来说,vite.config.ts
ialah pilihan yang lebih baik untuk fail yang digunakan secara global seperti fail variables.scss
.
P粉9389363042024-03-20 10:12:16
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.