typescript - בעת שימוש ב-.module.scss ב-vue3, התרחשה שגיאת ts


יש לי משתנה ב-foo.module.scss, ואני רוצה להשתמש בזה בקבצי .vue. כשאני מייבא את המשתנה ל-foo.vue, אני מקבל שגיאת ts

// foo.vue
<script lang="ts" setup>
// Module '"*.module.scss"' has no exported member 'titleColor'. Did you mean to use 'import titleColor from "*.module.scss"' instead?ts(2614)
import { titleColor } from '@/styles/var.module.scss'

// Even if I output this variable, ts will still report an error
console.log(titleColor)

</script>
// foo.module.scss

$aside-menu-bg: pink;

:export {
  titleColor: $aside-menu-bg;
}

הנה הדגמה של הפרויקט שלי. שגיאה זו תדווח כאשר הקוד יועתק ל-vscode המקומי

https://stackblitz.com/edit/vitejs-vite-yidtzb?file=src/App.vue

אגב, כשאני כותב ככה, אני יכול לקבל את מה שאני רוצה בצורה נכונה ולהימנע מדיווח על שגיאות, אבל אני אקבל הרבה דברים שאני לא רוצה

// foo.vue
<script lang="ts" setup>
import test from '@/styles/var.module.scss'

// output: a huge object
console.log(test)

</script>

תשובה #1

סעיף המסמכים של Vite על מודולי CSS מסביר כיצד להפעיל ייבוא בשם.

אלטרנטיבית, אתה יכול להשתמש בפירוק אובייקט:

import scss from '@/styles/var.module.scss'
let { titleColor } from scss