我正在使用类似三元的语句来初始化 Sass 中的变量。这允许我将一些默认变量设置为 Zurb Foundation 正在使用的相同变量,但如果我决定不包含 Foundation 模块,那么事情就不应该落在他们头上。
$nav-link-icon-color: if( global-variable-exists($topbar-link-color), $topbar-link-color, #fff) !default;
在我升级到 Sass 3.4 之前,这一切都工作正常。紧接着,我开始收到此错误:
error sass/style.scss (Line 20 of sass/partials/_navigation-icons.scss: $name: #ffffff is not a string for `global-variable-exists')
$topbar-link-color
当我检查它时已经初始化了。它是一个值为 #fff 的字符串,由 Foundation 声明如下:
$topbar-link-color: #fff !default;
我什至尝试将未初始化的变量传递给global-variable-exists()
:
$nav-link-icon-color: if( global-variable-exists($happy-scrappy), $happy-scrappy, #fff) !default;
但 Sass 仍然讨厌这一点:
error sass/style.scss (Line 21 of sass/partials/_navigation-icons.scss: Undefined variable: "$happy-scrappy".)
这对我来说很奇怪,因为整个要点global-variable-exists()
你知道,就是检查变量是否存在。看起来参数发送到global-variable-exists()
没有被正确解析,但我不知道。
我尝试卸载所有版本的 Sass 和 Compass,然后重新安装,最后重新启动,但无济于事。我什至恢复到我之前使用的 Sass 3.3.14,但同样的错误仍然存在。
指南针1.0.1
萨斯3.4.0
基础5.3.3
红宝石 2.0.0p481
赢7 64位
编辑:经过进一步研究,我错误的做法是在 sass 3.2.19 和 compass 0.12.2 中工作。