Pembolehubah dan campuran global Sass tidak berfungsi
P粉722521204
P粉722521204 2024-03-19 16:04:11
0
2
419

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粉722521204
P粉722521204

membalas semua(2)
P粉205475538

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粉938936304

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.

Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan