带有reactjs的同位素布局导致Uncaught TypeError:无法读取属性' EventEmitter'未定义的

时间:2015-09-07 21:34:12

标签: reactjs isotope

我有一个 ReactJS 组件,它呈现子组件,我想用同位素来显示子组件。我使用browserifyreactify来打包。

在我的component.jsx文件中,这是导致问题的唯一原因:

var Isotope = require('isotope-layout');

哪个js会抛出以下错误:

Uncaught TypeError: Cannot read property 'EventEmitter' of undefined

特别是由此行var originalGlobalValue = exports.EventEmitter;

引起的

否则,组件在没有同位素的情况下工作正常。

我在github上提出了issue,但我认为这可能会引起更多关注。

我后来发现了未定义的'在打包的eventemitter代码中

    } else if (typeof module === 'object' && module.exports) {
        module.exports = EventEmitter;
    } else {
        exports.EventEmitter = EventEmitter;
    }
}).call(undefined);

手动将其更改为this并开始工作

}).call(this);

这是gulp中的部分:

<pre lang="javascript"><code>
gulp.task('libjs', function() {
    browserify({
        require: libjs,
    }).transform(babelify, {global:true}).transform(reactify, {global:true}).bundle().pipe(source('lib.js')).pipe(gulp.dest(paths.js_built));
})

更新

似乎babelify导致了这个问题。如果我不包含babelify,则不会在打包的代码中创建}).call(undefined);

2 个答案:

答案 0 :(得分:0)

您是否尝试过明确依赖"wolfy87-eventemitter": "4.2.0"

答案 1 :(得分:0)

babelify确实导致了这个问题。但是,正如Levi Botelho中的this answerthis issue中所述,需要

"wolfy87-eventemitter": "4.2.0"

明确地为我们解决了这个问题。