Вложенные миксины в LESS выдают ошибку

Я пытаюсь создать миксин .flexbox, который принимает аргумент @orient, который также должен автоматически применять box-orient. При использовании его в сочетании с !important я получаю ошибку, которая также воспроизводима с более суженным набором тестов:

.foo() {
  .bar;
}

.bar {
  color: red;
}

body {
  .foo() !important;
}

Это заставляет LESS выдавать ошибку (я использую ее в node.js):

C:\...\node_modules\less\lib\less\parser.js:385
                        throw new(LessError)(e, env);
                              ^
TypeError: Cannot call method 'charAt' of undefined

Как ни странно, использование .foo вместо .foo() работает как положено:

.foo {
  .bar;
}

.bar {
  color: red;
}

body {
  .foo !important;
}

Что я делаю не так?


person pimvdb    schedule 15.06.2012    source источник
comment
Я попробовал ваш код с менее 1.3.0 онлайн, и он работает нормально . Может быть, это какая-то проблема с узлом или какая-то проблема со старой версией lesscss?   -  person kapex    schedule 17.06.2012
comment
@kapep: Упс, спасибо за проверку. Я слишком сузил его. На самом деле я использую его в сочетании с !important. Онлайн версия выдает ту же ошибку.   -  person pimvdb    schedule 17.06.2012


Ответы (1)


Быстрый поиск привел меня к этому отчету об ошибке. Это известная проблема.

https://github.com/cloudhead/less.js/issues/740

Честно говоря, я бы посоветовал вам попытаться выполнить то, что вы пытаетесь сделать, каким-то другим способом. На момент написания этой статьи объем невыполненных задач less.js составляет 417 ошибок. Вряд ли это будет исправлено в ближайшее время.

(да, это отчет об ошибке, вы создали вложенное правило, расширив .foo с помощью .bar)

person sg3s    schedule 16.06.2012
comment
Хм, да, похоже, это одно и то же. тогда оставлю пока. Спасибо. - person pimvdb; 17.06.2012