Lzh on GitHub

@error

在编写接受参数的混合宏和函数时,你通常希望确保这些参数具有你的 API 预期的类型和格式。如果它们不符合,需要通知用户,并且你的混合宏/函数需要停止运行。

在编写接受参数的混合宏函数时,你通常希望确保这些参数具有你的 API 预期的类型和格式。如果它们不符合,需要通知用户,并且你的混合宏/函数需要停止运行。

Sass 使用 @error 规则使得这变得容易,其写法为 @error <expression>。它会打印表达式的值(通常是一个字符串)以及一个堆栈跟踪,指示当前混合宏或函数是如何被调用的。一旦错误被打印,Sass 就会停止编译样式表,并告诉运行它的系统发生了错误。

@mixin reflexive-position($property, $value) {
  @if $property != left and $property != right {
    @error "Property #{$property} must be either left or right.";
  }

  $left-value: if($property == right, initial, $value);
  $right-value: if($property == right, $value, initial);

  left: $left-value;
  right: $right-value;
  [dir=rtl] & {
    left: $right-value;
    right: $left-value;
  }
}

.sidebar {
  @include reflexive-position(top, 12px);
  //       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  // Error: Property top must be either left or right.
}

错误和堆栈跟踪的确切格式因不同的实现而异,也可能取决于你的构建系统。这是在命令行中运行 Dart Sass 时它的样子:

Error: "Property top must be either left or right."
3     @error "Property #{$property} must be either left or right.";
     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  example.scss 3:5   reflexive-position()
  example.scss 19:3  root stylesheet