Vite项目中使用Sass变量时报错,该怎么解决?
我在React组件里用Sass写了一个按钮样式,定义了$primary-color变量,但页面显示时控制台报错说Undefined variable。
代码是这样的:
import './button.scss';
function Button() {
return <button className="primary-btn">Click me</button>;
}
export default Button;
对应的button.scss文件里这样写的:
$primary-color: #4CAF50;
.primary-btn {
background: $primary-color;
padding: 1em 2em;
}
已经用npm安装了sass包,但重启Vite后还是报同样的错误。有人遇到过类似情况吗?是不是需要额外配置?
原因是Sass变量在单独的文件中不会自动全局可用,你需要创建一个专门存放变量的
_variables.scss文件,然后在需要使用变量的Sass文件中通过@use或@import引入。比如:
创建一个
_variables.scss文件:$primary-color: #4CAF50;
然后在你的
button.scss文件中这样写:@use './variables' as vars;
.primary-btn {
background: vars.$primary-color;
padding: 1em 2em;
}
注意变量要用命名空间访问,也就是
vars.$primary-color。如果你不想用
@use,也可以继续用@import,但建议使用@use因为这是Sass官方推荐的新方式,而且更清晰。另外确保你的
sass包已经安装,Vite默认支持,不需要额外配置。如果你用的是node-sass请换成sass(因为node-sass已经废弃了),否则也会出问题。npm install sass
装完重启Vite服务。
这样改完以后,你的变量就能正常用了。