Как отобразить путь ошибки, где используется пользовательская функция? - PullRequest
0 голосов
/ 06 сентября 2018

Если я использую встроенную функцию Sass, которая возвращает ошибку, она будет отображать путь , где она используется .

Использование встроенной функции Sass:

Код от _test.scss.

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

Результатом будет:

error _test.scss (строка 2: $ amount: "s" не является числом для `darken ')



Теперь, если я использую пользовательскую функцию, которая возвращает ошибку, она будет отображать путь , где он определен вместо того, где он используется.

Использование пользовательской функции:

Код от _test.scss.

.foo {
  color: example(string);
}

Код от _functions.scss.

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

Результат:

ошибка core / utils / _functions.scss (строка 2: сообщение об ошибке)


Есть ли решение для этой "проблемы"?

1 Ответ

0 голосов
/ 06 сентября 2018

Ваши примеры похожи только визуально, основная логика совершенно другая:

  • Для встроенной функции Sass выдает ошибку самостоятельно, потому что код недопустим с точки зрения Sass .
  • Во втором примере вы выдаете ошибку, потому что код недопустим с вашей точки зрения. Сам код, если действителен с точки зрения Sass в этом случае.

В обоих случаях Sass отображает одинаковую информацию о местонахождении ошибки - точку в вашей кодовой базе, где происходит ошибка. Но в случае вашей собственной преднамеренной ошибки выбрасывание фактической точки, в которой происходит ошибка, фактически совпадает с местом, где вы генерируете эту ошибку - именно там, где у вас есть ваша директива @error. Так что в поведении Sass нет ошибки, поскольку он ничего не знает о причинах, по которым вы решили выдать ошибку.

Вы всегда можете проанализировать трассировку стека, которая отображается (по крайней мере, node-sass ) вместе с сообщением об ошибке, чтобы решить, откуда вы попали в точку ошибки. Вы также можете использовать @debug для отображения контекста, который может быть полезен для анализа ошибок.

...