使用Glenn Marks版Live Sass Compiler替换@import为@use时出现未定义变量错误
解决Live Sass Compiler(Glenn Marks版)替换@import为@use后的变量未定义错误
出现Error: Undefined variable.的核心原因是**@use和@import的作用域机制完全不同**:
@import会把导入文件里的所有变量、混入等直接暴露到全局作用域,所以可以直接调用变量名@use会将导入的模块进行封装,所有成员默认归属于该模块的命名空间(默认是去掉下划线和后缀的文件名),直接写变量名自然找不到
给你三个可行的解决办法:
- 使用默认命名空间调用变量:比如你导入的变量文件是
_variables.scss,导入语句写@use 'variables';,之后调用变量时要加上命名空间,像variables.$primary-color - 自定义命名空间:导入时指定简短命名空间,比如
@use 'variables' as v;,调用时写v.$primary-color,这样更简洁 - 全局导入(不推荐):如果不想加命名空间,可以用
@use 'variables' as *;,把模块所有成员直接导入当前作用域,但这样会失去@use的模块封装优势,不建议在大型项目里用
另外要确认Live Sass Compiler的设置:确保编译器使用的是Dart Sass(@use是Dart Sass的特性),Glenn Marks版默认支持,但可以在VS Code的设置里搜索Live Sass Compiler: Sass Compiler,确认选项是dart-sass而不是node-sass
内容的提问来源于stack exchange,提问作者Chrumczyk
相关产品推荐
相关产品推荐

