Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

TypeError: 'undefined' is not an object (evaluating 'Input.decl') #16

Closed
awinogradov opened this issue Jan 29, 2015 · 17 comments
Closed

Comments

@awinogradov
Copy link

Как с этим бороться? Понятно только что проблема с депсами, что мол они не объект, только вот они все массив так-то. @andrewblond ты не в курсе?

@blond
Copy link
Member

blond commented Jan 30, 2015

Привет! Можешь добавить немного подробностей?

@awinogradov
Copy link
Author

Да, канеш, сорри:) я создаю модификатор блоку input в input_type_link.browser.js.

modules.define('input', function(provide, Input) {
    provide(Input.decl({ block : this.name, modName : 'type', modVal : 'link' }, {}));
});

в депсах у модификатора пишу

[{
    tech : 'spec.js',
    mustDeps : [
        { tech : 'bemhtml', block : 'input', mods : { type: 'link'} }
    ]
}]

Пишу тест. Пустой даже. И получаю эту ошибку. Долгое изыскание принесло понимание, что дело не в втоих спеках, а в модульной системе походу. И следующая запись решила проблему, но так как-то не тру.

provide(BEMDOM.decl({ block : this.name, modName : 'type', modVal : 'link' }, {}));

@tadatuta
Copy link
Member

@verybigman попробуй не задавать block : this.name. В bem-components как раз в input есть модификаторы и тесты собираются нормально.

@awinogradov
Copy link
Author

По-моему, это не решает проблему, получаю ошибку на decl
Пт, 30 янв. 2015 г. в 23:08, Vladimir Grinenko notifications@github.com:

@verybigman https://github.com/verybigman попробуй не задавать block :
this.name. В bem-components как раз в input есть
https://github.com/bem/bem-components/blob/v2/desktop.blocks/input/_autofocus/input_autofocus.js
модификаторы
https://github.com/bem/bem-components/blob/v2/desktop.blocks/input/_has-clear/input_has-clear.js
и тесты собираются нормально.


Reply to this email directly or view it on GitHub
#16 (comment)
.

@tadatuta
Copy link
Member

@verybigman тогда ждем тест-кейс, на котором можно было бы поэкспериментировать

@awinogradov
Copy link
Author

Сделал копию bem-components репозитория, удалили все блоки, добавил свои и подключил bem-compnents вот тут https://github.com/verybigman/test-case/tree/master/common.blocks/input/_type
Проблема воспроизводиться:)

@tadatuta
Copy link
Member

@verybigman пока понятно только, что проблема в порядке подключения зависимостей — код модификатора идет раньше, чем код самого блока, поэтому Input.decl() и падает.
При этом в собранном deps.js порядок верный, так что с большой долей вероятности проблема таки в enb-bem-specs.

@awinogradov
Copy link
Author

Это очень грустно. Объявление через BEMDOM помогает, но блок тогда не инитится в тестах

@tadatuta
Copy link
Member

Не грусти, у нас есть волшебный @andrewblond, он обязательно все починит ;)

@awinogradov
Copy link
Author

Будем ждать:) Спасибо за помощь!

@awinogradov
Copy link
Author

Мужчины! Тут выяснилось внезапно, что все дело в суффиксах технологий. По каким-то причинам *.js собирается после *.browser.js. Через *.js все описано в компонентах и нет там *.browser.js. Хотя как по мне, то должно собираться *.vanilla.js -> *.browser.js, *.vanilla.js -> *.node.js

@blond
Copy link
Member

blond commented Feb 11, 2015

Cуффикс js по смыслу является алиасом для browser.js, поэтому не должно быть никакой разницы в том, что из этого будет раньше, а что позже.

При этом vanilla.js действительно собирается раньше чем browser.js и js.

Может где-то js использовался как алиас к vanilla.js и это нужно исправить, переименовав файлы в vanilla.js?

@awinogradov
Copy link
Author

Проверим, напишу че как. Еще в тестах как-то криво собирается bemhtml:) ретурн контекста раньше условий блока в бандле. Пока грешу на мердж. Разбиремся.

@dragn
Copy link
Contributor

dragn commented Feb 12, 2015

@verybigman @andrewblond по поводу "кривой сборки bemhtml" завел отдельную заявку #18

@tadatuta
Copy link
Member

отдельную заявку закрыл ;)

@awinogradov
Copy link
Author

@tadatuta спасибо!

@blond
Copy link
Member

blond commented Jun 3, 2015

Вроде всё решилось? Закрываю задачу, если, что не стесняйтесь переоткрыть ;)

@blond blond closed this as completed Jun 3, 2015
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

4 participants