Как сделать, чтобы в ошибки из бандла валились в консоль с указанием информации о блоке?
Кроме как вручную писать try { } catch (e) { console.log(this.block, e) }
Как сделать, чтобы в ошибки из бандла валились в консоль с указанием информации о блоке?
Кроме как вручную писать try { } catch (e) { console.log(this.block, e) }
@belozyorcev я догадываюсь, что ты про bem-xjst? Если так, то, насколько я понимаю, https://github.com/bem/bem-xjst/pull/207 должно решать твою задачу?
Да. Но как я понял, здесь касаемо отсутствия блоков? Я имею ввиду ситуацию, когда например такой код
когда у нас отсутствует
data.super.puper.test.errror
, но мы пытаемся его получить. В консоль падает ошибка, что проблема в бандле. Но хотелось бы, чтобы ошибка указывала имя блока, в котором возникла она.Сейчас есть стектрейс, который указывает на нужную строку. Ну и я все никак не дойду допилить сорсмапы, чтобы по стектрейсу можно было увидеть не только строку в собранном бандле, но и ее же в исходниках. Когда-нибудь добьем эту историю.
PS: безотносительно сути вопроса, пример кода можно улучшить:
На функциях стрелках успел обжечься. (получение данных из this.data объявленном в родителе). А так спасибо за советы )
нет, но теперь есть объективная причина писать правильно )
@tadatuta попробовал через node.mods установить модификаторы, не получилось.
только через
ctx
ставятся@tadatuta ухх... Я сам в шоке как такое смог написать :bomb: Да, всё верно. Там
split('')
должен был быть.это странно, см. пример:
http://bem.github.io/bem-xjst/?bemhtml=block(%27b1%27).content()(node%20%3D%3E%20%7B%0A%20%20%20%20node.mods.m1%20%3D%20%27v1%27%3B%0A%7D)%3B&bemjson=%5B%0A%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20block%3A%20%27b1%27%0A%20%20%20%20%7D%0A%5D%0A
@tadatuta у меня BEMTREE код. Может из-за этого?
Да, похоже. Вообще менять модификатор в режиме
content()
— это тоже не очень-то прямое использование. Ведь если написать шаблоны на проставляемые модификаторы, они не отработают.Я бы тут предложил отказаться от экономии на спичках и писал модификаторы сразу в поле
mods
на уровне BEMJSON API, вместо того, чтобы писать их вctx
и потом в шаблонах перекладывать. Еще вариант — делать это в режимеdef()
.