根本原因是@use默认不注入变量到当前作用域,必须通过命名空间访问(如v.$primary-color);常见错误包括漏写v.或$、additionaldata末尾缺分号、路径未加引号或扩展名、ide删分号、vite与vue cli配置字段混淆、别名未生效、_variables.scss文件名未以下划线开头。

为什么 @use 注入后变量仍报 Undefined variable
根本不是变量文件不存在,而是 @use 默认不把符号注入当前作用域——它只创建命名空间。你写了 @use "@/styles/variables.scss" as v,那 $primary-color 就只能写成 v.$primary-color,漏掉 v. 或 $ 都会报错。
更常见的是在 additionalData 里用了 @use ... as *,但 variables.scss 文件里又包含 @use "sass:math" 这类内部依赖,而没用 @forward 显式导出,导致 as * 实际什么也没解构出来。
-
additionalData字符串末尾必须带分号,否则下一行 CSS 规则会被拼进 SCSS 语句,静默失败 - 路径必须用引号包裹,
@use "@/styles/variables.scss" as *;合法,@use "@/styles/variables.scss" as *;(缺引号)或@use "@/styles/variables" as *;(缺.scss)都无效 - IDE 自动格式化可能删掉
@use行末分号,编译器不报错但跳过整行,很难排查
additionalData 配置了却没生效的典型原因
不是 Vite 版本或插件问题,90% 是配置位置或语法错位。Vue CLI 和 Vite 的字段名完全不同:Vue CLI(sass-loader v8+)必须用 prependData,Vite 才认 additionalData;混用就等于没配。
如果你了解HTML,CSS和JavaScript,您已经拥有所需的工具开发Android应用程序。本动手本书展示了如何使用这些开源web标准设计和建造,可适应任何Android设备的应用程序 - 无需使用Java。您将学习如何创建一个在您选择的平台的Android友好的网络应用程序,然后转换与自由PhoneGap框架到一个原生的Android应用程序。了解为什么设备无关的移动应用是未来的潮流,并开始构建应用程序,提供更
- Vite 项目写在
css.preprocessorOptions.scss.additionalData下,Vue CLI 则要写在css.loaderOptions.sass.prependData - 别名
@必须在resolve.alias中定义,且该配置块不能晚于css块执行,否则路径解析失败返回空字符串 - 如果用了 pnpm/yarn PnP,确认
sass在devDependencies里,否则 Vite 根本加载不到编译器
为什么在 <style lang="scss"></style> 里写 $color 没反应
最隐蔽的情况是 lang="scss" 被忽略:没写 lang 属性时,Vite 默认当纯 CSS 处理,$color 原样输出到浏览器,CSS 解析器直接丢弃;写了 lang="scss" 但文件里有语法错误(比如多了一个 : 或少括号),整个 <style></style> 块会被跳过编译,变量自然不可见。
-
<style scoped></style>不影响变量可用性——scoped 只限制选择器,不影响 SCSS 编译期变量注入 -
<style module></style>和lang="scss"同时存在时,Vite 优先走 CSS Modules 流程,SCSS 变量不参与处理 - HMR 热更新可能缓存旧的
<style></style>编译结果,改了 variables.scss 后组件样式没刷新,需手动硬刷新一次
如何验证变量是否真被注入成功
别只盯着控制台有没有报错。打开浏览器开发者工具,找任意一个已渲染的组件,点开其 <style></style> 标签内容——如果看到 @use "@/styles/variables.scss" as *; 这行出现在顶部,说明注入成功;如果没看到,或者看到的是 @import 但变量仍不可用,大概率是 variables.scss 自身含 CSS 规则(如 body { }),导致它被当作样式文件而非模块,@use 拒绝加载。
真正容易被忽略的一点:variables.scss 文件名必须以下划线开头(如 _variables.scss),否则 Dart Sass 不认为它是可 @use 的模块,即使路径完全正确也会静默失败。
前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!










