bem-site / bem-forum-content-ru

Content BEM forum for Russian speak users
MIT License
56 stars 6 forks source link

Подключение по технологии #111

Open awinogradov opened 9 years ago

awinogradov commented 9 years ago

Проблема невероятно чудесная. Вот здесь https://github.com/verybigman/bem-grid/blob/8218ef38503fc224219788692e7ddcd965f6428e/common.blocks/row/row.deps.js подключаю как зависимость по технологии bemhtml блоки i-bem и row. Ожидается, что шаблон row попадет в бандл с browser.js. Но не все так просто. При запуске в браузере получаю ошибку: Uncaught Error: Module "row": can't resolve dependence "BEMHTML", тесты проходят безупречно. Почему в фантоме все ок, а в живом браузере нет? Народ, помогите, я спать не могу из-за этого. Сбросить кэш не предлагать. Подключать bemhtml.js тоже не true. Сборщик bem-tools.

voischev commented 9 years ago

Выспался? ;)

А если так? (сделал массив) не уверен что в этом проблема, но все же

А еще row добавил в технологию js

[{
    tech : 'js',
    mustDeps : [
        { tech : 'bemhtml', block : 'i-bem' },
        { tech : 'bemhtml', block : 'row' }
    ]
},
{
    tech : 'spec.js',
    mustDeps : [
        { tech : 'bemhtml', block : 'row' }
    ]
},
{
    mustDeps : [
        { block : 'i-bem', elems : 'dom' },
        { block : 'mq' }
    ],
    shouldDeps : [
        { block : 'row', mods : { flexbox : 'disabled' } },
        { elems : 'col' }
    ]
}]
apsavin commented 9 years ago

Скорее

({
    tech : 'js',
    mustDeps : [
        { tech : 'bemhtml', block : 'i-bem' },
        { tech : 'bemhtml', block : 'row' }
    ]
},
{
mustDeps : [
    { block : 'i-bem', elems : 'dom' },
    { block : 'mq' }
],
shouldDeps : [
    { block : 'row', mods : { flexbox : 'disabled' } },
    { elems : 'col' }
]
})

В примерах выше блок row в технологии bemhtml подключается только для тестов - собственно, поэтому в фантоме все ок.

voischev commented 9 years ago

Ну надеюсь теперь можно спать спокойно :)

awinogradov commented 9 years ago

Не хотелось бы вас расстраивать) Но нет, так тоже не работает. Увы :( Ошибка та же, абсолютно.

tadatuta commented 9 years ago
git clone git@github.com:verybigman/bem-grid.git
cd bem-grid
git checkout 8218ef38503fc224219788692e7ddcd965f6428e
npm i
bower-npm-install

потом

git diff
diff --git a/common.blocks/row/row.deps.js b/common.blocks/row/row.deps.js
index 72af942..3d10de9 100644
--- a/common.blocks/row/row.deps.js
+++ b/common.blocks/row/row.deps.js
@@ -1,22 +1,25 @@
-({
-    tech : 'js',
-    mustDeps : [
-        { tech : 'bemhtml', block : 'i-bem' }
-    ]
-},
-{
-    tech : 'spec.js',
-    mustDeps : [
-        { tech : 'bemhtml', block : 'row' }
-    ]
-},
-{
-    mustDeps : [
-        { block : 'i-bem', elems : 'dom' },
-        { block : 'mq' }
-    ],
-    shouldDeps : [
-        { block : 'row', mods : { flexbox : 'disabled' } },
-        { elems : 'col' }
-    ]
-})
+[
+    {
+        tech : 'js',
+        mustDeps : [
+            { tech : 'bemhtml', block : 'i-bem' },
+            { tech : 'bemhtml', block : 'row' }
+        ]
+    },
+    {
+        tech : 'spec.js',
+        mustDeps : [
+            { tech : 'bemhtml', block : 'row' }
+        ]
+    },
+    {
+        mustDeps : [
+            { block : 'i-bem', elems : 'dom' },
+            { block : 'mq' }
+        ],
+        shouldDeps : [
+            { block : 'row', mods : { flexbox : 'disabled' } },
+            { elems : 'col' }
+        ]
+    }
+]

после чего

bem server

В браузере http://localhost:8080/promo.pages/index/index.html

И в браузерной консоли

modules.require(['BEMHTML'], function(BEMHTML) {
    console.log(BEMHTML.apply({ block: 'row' })); // <div class="row i-bem" data-bem="{&quot;row&quot;:{}}"></div>
});
awinogradov commented 9 years ago

Работает!!! Володя, спасибо! Осталось понять в чем же было дело :(

tadatuta commented 9 years ago

депсы в случае использования общий зависимостей и зависимостей по технологиям должны быть массивом.

а когда ты так пробовал и не помогло, скорее всего виноват был кэш.

awinogradov commented 9 years ago

По всей видимости да, огромное спасибо!