Closed
Description
Наткнулся на проблему из-за вот этого места https://github.com/bem/bem-core/blob/v3/common.blocks/i-bem/__dom/i-bem__dom.js#L1563
Каждый блок делает define i-bem__dom_init
, соответственно при резолве получается большая рекурсия и большой стек. В моем проекте от этого пострадал живой пользователь и ферма автотестов. Firefox'ы в определенном окружении (win/linux) падают с 'too much recursion'
Хочется отсюда рекурсию убрать. Пока запатчил вот так (да, storedDeps некрасиво передается по ссылке)
(function() {
var origDefine = modules.define;
var storedDeps = [];
var iBemDomInitDefined = false;
modules.define = function(name, deps, decl) {
origDefine.apply(modules, arguments);
if (name !== 'i-bem__dom_init' && arguments.length > 2 && ~deps.indexOf('i-bem__dom')) {
storedDeps.push(name);
if (!iBemDomInitDefined) {
iBemDomInitDefined = true;
modules.define('i-bem__dom_init', storedDeps, function(provide, _, prev) {
provide(prev);
});
}
}
};
})();