我在文件 _variables.scss 中声明了一个 sass 变量。当我使用 @use 导入该文件时,编译时出现错误,指出“错误:未定义的变量”。但是,如果我使用 @import 代替,一切都会编译得很好。
这是导入的第一个文件
//_variables.scss
$primaryColor: rgba(199, 26, 113, 0.747);
Run Code Online (Sandbox Code Playgroud)
这是正在进行导入的文件。
//styles.scss
@use 'variables';
header {
background: $primaryColor;
}
Run Code Online (Sandbox Code Playgroud)
编译时返回“错误:未定义的变量”。但如果我将 @use 更改为 @import,它就可以正常工作。
为什么@import 有效但@use 无效?
使用 导入的变量@use 有一个命名空间。因此,您需要在变量名前添加命名空间(即,而不是$primaryColorwrite variables.$primaryColor):
@use 'variables';
// @use './variables' // creates the same namespace
header {
background: variables.$primaryColor;
}
Run Code Online (Sandbox Code Playgroud)
您还可以重命名命名空间:
@use 'variables' as 'renamedVariables';
header {
background: renamedVariables.$primaryColor;
}
Run Code Online (Sandbox Code Playgroud)
如果您不想使用名称空间,则可以加载没有名称空间的变量:
@use 'variables' as *;
header {
background: $primaryColor;
}
Run Code Online (Sandbox Code Playgroud)
但是 imo 命名空间使您的样式表更加整洁(例如,很清楚每个变量来自哪里,并且您不会意外地用另一个变量覆盖一个变量),所以我会坚持使用它们......
另一个堆栈溢出答案为我指明了正确的方向