如何显示自定义函数使用位置的错误路径?

How to display the error path of where the custom function is used?

如果我使用内置的Sass函数returns出错,它会显示使用它的路径

使用内置 Sass 函数:

代码来自 _test.scss.

.foo {
  color: darken(blue, s);
}

将导致:

error _test.scss (Line 2: $amount: "s" is not a number for `darken')



现在,如果我使用一个 returns 错误的自定义函数,它将显示 定义 的路径,而不是使用它的位置。

使用自定义函数:

代码来自 _test.scss.

.foo {
  color: example(string);
}

代码来自 _functions.scss.

@function example($string) {
  @error 'error message';
}

将导致:

error core/utils/_functions.scss (Line 2: error message)


有解决这个“问题”的方法吗?

你们的例子只是在视觉上相似,底层逻辑完全不同:

  • 对于内置函数 Sass 本身会抛出错误,因为从 Sass 的角度来看代码 无效
  • 在第二个例子中你抛出了错误,因为从的角度来看代码是无效的。在这种情况下,如果从 Sass 的观点 有效,则自行编码。

在这两种情况下,Sass 显示有关错误位置的相同信息 - 指向代码库中发生错误的位置。但是在你自己的情况下,故意错误抛出错误发生的实际点实际上匹配你产生这个错误的地方 - 恰好在你有你的 @error 指令的地方。所以 Sass 行为没有错误,因为它对你决定抛出错误的原因一无所知。

您始终可以分析显示的堆栈跟踪(至少 node-sass)以及错误消息,以确定您从哪里得到错误点。您还可以使用 @debug 显示可能对错误分析有用的上下文。