cari

Rumah  >  Soal Jawab  >  teks badan

Pembolehubah dan campuran global Sass tidak berfungsi

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粉722521204P粉722521204253 hari yang lalu421

membalas semua(2)saya akan balas

  • P粉205475538

    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.

    balas
    0
  • P粉938936304

    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.

    balas
    0
  • Batalbalas