EN
bonjovi
bonjovi
12 сентября 2017

Добрый вечер

Пытаюсь вывести данные из JSON, как сказано здесь - https://ru.bem.info/forum/716/

Ничего не выходит, помогите найти ошибку

Вывожу вот так - http://joxi.ru/V2VL9x3SxLX34r

Выдаёт ошибку TypeError: Cannot read property 'apply' of undefined
http://joxi.ru/1A5xBqGsnO6Nd2

В переменную BEMTREE почему-то ничего не приходит.

Проверил в вышеобозначенном файле page.bemtree.js через console.log() значения этих четырёх переменных:

  • PATH
  • pathToBundle
  • BEMTREE
  • BEMHTML

Все имеют значение, кроме BEMTREE имеющей undefined

Сборку свою текущую загрузил сюда - https://yadi.sk/d/6WCDVmYN3MqEBL

tadatuta
#tadatuta
12 сентября 2017

если удалить common.blocks/page/page.bemtree.js все станет нормально.
код, который запускает шаблоны, должен быть вне кода самих шаблонов.

bonjovi
#bonjovi
12 сентября 2017

Пробовал удалить, пробовал переместить эту часть кода в другие файлы - http://joxi.ru/5mdYLlBskZd492

Но всё по-прежнему - http://joxi.ru/52az6GBF4dY9KA

bonjovi
#bonjovi
13 сентября 2017

С частью проблем разобрался, но пока всё равно не получается вывести данные из json

Куда надо положить файл с этим содержимым применительно к этой сборке? - https://github.com/tadatuta/bem-bemtree-static-project-stub

var data = require('../../common.blocks/server/data.json');
PATH = require('path'),
pathToBundle = PATH.join('.', 'desktop.bundles', 'index'),
BEMTREE = require(PATH.join('../../' + pathToBundle, 'index.bemtree.js')).BEMTREE,
BEMHTML = require(PATH.join('../../' + pathToBundle, 'index.bemhtml.js')).BEMHTML,
bemjson = BEMTREE.apply(data),
html = BEMHTML.apply(bemjson);

require('fs').writeFileSync('index.html', html);

BEMTREE.apply({
block: 'main',
data: data // теперь данные попадут в контекст шаблона блока page
});

Я положил этот код в common.blocks/server/server.node.js
И рядом положил файл server.deps.js с этим содержимым:

({
shouldDeps: [
'main'
]
})

По итогу данные в main не попадают, сборка игнорирует видимо содержимое common.blocks/server/server.node.js