如果我使用返回错误的内置 Sass 函数,它将显示使用它的路径。
使用内置的 Sass 函数:
来自_test.scss
的代码。
.foo {
color: darken(blue, s);
}
将导致:
错误 _test.scss(第 2 行:$amount:"s"不是"变暗"的数字(
现在,如果我使用返回错误的自定义函数,它将显示定义位置的路径,而不是使用位置。
使用自定义函数:
来自_test.scss
的代码。
.foo {
color: example(string);
}
来自_functions.scss
的代码。
@function example($string) {
@error 'error message';
}
将导致:
error core/utils/_functions.scss(第 2 行:错误消息(
有没有解决这个"问题"的解决方案?
您的示例仅在视觉上相似,底层逻辑完全不同:
- 对于内置函数,Sass 会自行抛出错误,因为从Sass 的角度来看,代码无效。
- 在第二个示例中,您抛出错误,因为从您的角度来看,代码无效。在这种情况下,如果从 Sass 的角度来看有效,则代码本身有效。
在这两种情况下,Sass 都会显示有关错误位置的相同信息 - 代码库中发生错误的点。但是在你自己的情况下,故意错误抛出发生错误的实际点实际上与你生成此错误的地方相匹配 - 恰好在你有@error
指令的地方。因此,Sass 的行为没有错误,因为它不知道您决定抛出错误的原因。
您始终可以分析显示的堆栈跟踪(至少通过 node-sass(以及错误消息,以确定您从哪里到达错误点。您还可以使用@debug
来显示可能对错误分析有用的上下文。