为什么我会收到语法错误:SassError:预期“{”?

Wen*_* Du 9 css sass sass-loader sass-maps dart-sass

map.setsass文档给出的示例不起作用,为什么呢?

\n
@use "sass:map";\n\n$font-weights: (\n  \'regular\': 400,\n  \'medium\': 500,\n  \'bold\': 700\n);\n\nmap.set($font-weights, \'extra-bold\', 900);\n// ("regular": 400, "medium": 500, "bold": 700, "extra-bold": 900)\nmap.set($font-weights, \'bold\', 900);\n// ("regular": 400, "medium": 500, "bold": 900)\n
Run Code Online (Sandbox Code Playgroud)\n

我的sass版本是1.32.5.
\n整个错误消息:

\n
@use "sass:map";\n\n$font-weights: (\n  \'regular\': 400,\n  \'medium\': 500,\n  \'bold\': 700\n);\n\nmap.set($font-weights, \'extra-bold\', 900);\n// ("regular": 400, "medium": 500, "bold": 700, "extra-bold": 900)\nmap.set($font-weights, \'bold\', 900);\n// ("regular": 400, "medium": 500, "bold": 900)\n
Run Code Online (Sandbox Code Playgroud)\n

我希望设置地图时不会抛出错误。

\n

Wen*_* Du 7

问题1(如果您使用的map.set,请跳至问题2)

\n

其实我一直在用map-set,以为map-set是一样的map.set,结果不是。

\n

在 Sass 的文档内置模块中:

\n
\n

在引入 Sass 模块系统之前,所有 Sass 函数在任何时候都是全局可用的。许多函数仍然具有全局别名(这些别名在其文档中列出)。Sass 团队不鼓励使用它们,并将最终弃用它们,但目前,它们仍然可与旧版 Sass 版本和 LibSass 兼容(尚不支持模块系统)。

\n
\n

并且map.set没有map-setmap.merge( map-merge) 这样的全局变量。

\n

问题2

\n

另外,我认为map.set会像 JavaScript 一样Map.prototype.set(),通过它设置一个映射map.set(key, value)而不将其分配给变量就可以了。在 Sass 中,我必须这样做:

\n
@use "sass:map";\n\n$map: ();\n$map: map.set($map, key, value);\n
Run Code Online (Sandbox Code Playgroud)\n

为什么@debug对我“不起作用”

\n

大多数情况下我在vue-cli环境下使用 Sass。Sass 的@debug语法“从来没有”任何视觉输出,事实证明它们实际上是输出的,我只需要向上滚动一点:

\n

在此输入图像描述

\n