我有一个 ReactJS 组件,它呈现子组件,我想用同位素来显示子组件。我使用browserify
和reactify
来打包。
在我的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);
。
答案 0 :(得分:0)
您是否尝试过明确依赖"wolfy87-eventemitter": "4.2.0"
?
答案 1 :(得分:0)
babelify
确实导致了这个问题。但是,正如Levi Botelho中的this answer和this issue中所述,需要
"wolfy87-eventemitter": "4.2.0"
明确地为我们解决了这个问题。