Sass模块编译SCSS文件报错求助
Sass模块编译SCSS文件报错求助
嘿,我瞅了你的代码和编译时报的错误,发现了几个容易踩的小坑,这就帮你捋顺解决:
先把你的问题场景再理一遍:你想通过循环生成一个包含正负间距值的Sass映射表,结果编译时在map.sets这一行直接报错了。
先说说你原代码里的几个关键问题:
- 变量名完全混乱:你一开始定义了空映射
$values,但循环里却用了根本没声明过的$spacers;而且初始间距变量是$initial,计算时却用了不存在的$spacer - Sass Map方法用错了:Sass的
map模块里没有map.sets()这个方法,正确的单个添加/修改键值对的方法是map.set()(注意是单数的set)
下面是修复后的完整代码:
@use "sass:map"; // 初始间距值 $initial: 4px; // 初始化空的映射表,变量名统一为$spacers $spacers: (); @for $i from -5 through 12 { // 用map.set()方法给映射表添加键值对,计算时用已定义的$initial $spacers: map.set($spacers, $i, $i * $initial); }
再给你拆解下每个修改点:
- 统一映射表变量名:把原来的
$values改成$spacers,循环里也保持用这个变量,彻底避免“未声明变量”的错误 - 修正Map操作方法:把不存在的
map.sets()换成正确的map.set(),这个方法会返回更新后的新映射表,所以需要重新赋值给$spacers - 修正计算用的变量:把
$i * $spacer改成$i * $initial,用你一开始就定义好的初始值变量
改完之后,你再用原来的Node Sass编译代码:
const result = sass.compile('./spacer.scss');
应该就能正常生成包含从-5到12对应间距值的映射表了。
备注:内容来源于stack exchange,提问作者Samvel
相关产品推荐
相关产品推荐

