繁体   English   中英

Gulp + Watchify + Factor捆绑包“检测到可能的EventEmitter内存泄漏”

“Possible EventEmitter memory leak detected” with Gulp + Watchify + Factor bundle

提示:本站收集StackOverFlow近2千万问答,支持中英文搜索,鼠标放在语句上弹窗显示对应的参考中文或英文, 本站还提供   中文繁体   英文版本   中英对照 版本,有任何建议请联系yoyou2525@163.com。

我正在使用gulp,browserify,watchify和factor bundle来构建开发中的多个javascript文件。 一切正常,除了一段时间后我开始看到此警告:

Trace
    at Browserify.addListener (events.js:179:15)
    at f (/Users/benoit/git/figure/web/node_modules/factor-bundle/index.js:55:7)
    at Browserify.plugin (/Users/benoit/git/figure/web/node_modules/browserify/index.js:345:9)
    at Browserify.bundle (/Users/benoit/git/figure/web/gulpfile.js:46:13)
    at Browserify.emit (events.js:107:17)
    at null._onTimeout (/Users/benoit/git/figure/web/node_modules/watchify/index.js:126:15)
    at Timer.listOnTimeout (timers.js:110:15)
(node) warning: possible EventEmitter memory leak detected. 11 finish listeners added. Use emitter.setMaxListeners() to increase limit.
Trace
    at ConcatStream.addListener (events.js:179:15)
    at ConcatStream.once (events.js:204:8)
    at Labeled.Readable.pipe (/Users/benoit/git/figure/web/node_modules/factor-bundle/node_modules/labeled-stream-splicer/node_modules/stream-splicer/node_modules/readable-stream/lib/_stream_readable.js:612:8)
    at /Users/benoit/git/figure/web/node_modules/factor-bundle/index.js:73:43
    at Array.reduce (native)
    at Transform._flush (/Users/benoit/git/figure/web/node_modules/factor-bundle/index.js:65:35)
    at Transform.<anonymous> (/Users/benoit/git/figure/web/node_modules/factor-bundle/node_modules/through2/node_modules/readable-stream/lib/_stream_transform.js:135:12)
    at Transform.g (events.js:199:16)
    at Transform.emit (events.js:129:20)
    at finishMaybe (/Users/benoit/git/figure/web/node_modules/factor-bundle/node_modules/through2/node_modules/readable-stream/lib/_stream_writable.js:371:12)
    at endWritable (/Users/benoit/git/figure/web/node_modules/factor-bundle/node_modules/through2/node_modules/readable-stream/lib/_stream_writable.js:378:3)
    at Transform.Writable.end (/Users/benoit/git/figure/web/node_modules/factor-bundle/node_modules/through2/node_modules/readable-stream/lib/_stream_writable.js:356:5)
(node) warning: possible EventEmitter memory leak detected. 11 finish listeners added. Use emitter.setMaxListeners() to increase limit.

下面是我的gulpfile

var gulp = require('gulp');
var gutil = require('gulp-util');
var source = require('vinyl-source-stream');
var browserify = require('browserify');
var reactify = require('reactify');
var watchify = require('watchify');
var factor = require('factor-bundle');
var uglify = require('gulp-uglify');
var fs = require('fs');
var concat = require('concat-stream');
var file = require('gulp-file');

gulp.task('watch', bundle)

function bundle () {

  // react components
  var files = [
    '/path/to/file1.jsx',
    '/path/to/file2.jsx',
    '/path/to/file3.jsx'
  ];


  var bundler = watchify(browserify(watchify.args)) 

  bundler.add(files);
  bundler.add('./lib/api.js', {expose: 'api'});
  bundler.require('./lib/api.js', {expose: 'api'});
  bundler.transform('reactify');
  bundler.on('update', rebundle);

  function rebundle() {
    bundler.plugin('factor-bundle', {
        outputs: [
          write('/path/to/file1.js'),
          write('/path/to/file2.js'),
          write('/path/to/file3.js'),
          ]
    });
    bundler.bundle()
        .on('error', gutil.log.bind(gutil, 'Browserify Error'))
        .pipe(write('shared.js'));
  };

  return rebundle();
}


function write (name) {
    return concat(function (content) {
        // create new vinyl file from content and use the basename of the
        // filepath in scope as its basename.
        return file(name, content, { src: true })
        // uglify content
        .pipe(uglify())
        // write content to build directory
        .pipe(gulp.dest('./public/bundles/'))
    });
}

我读过我应该在某个地方设置最大侦听器,但是我担心这可能是真正的内存泄漏。

1 个回复

我最初的解决方案无效,看起来确实是一个错误。 我想我已经找到了一个临时的hacky修复程序。

编辑node_modules/factor-bundle/index.js并进行更改

b.on('reset', addHooks); b.once('reset', addHooks);

您的原始代码应该可以工作。

这是GitHub得分谁保持得分的人:D

1 检测到EventEmitter内存泄漏

这是记录的问题 。 这是错误: 我试着使用request.setMaxListeners(0)根据计算器的答案和这个 ,但似乎并没有帮助。 我该如何解决? 我正在使用请求库建立1000个连接。 ...

5 Node/Express MaxListenersExceededWarning:检测到 EventEmitter 内存泄漏

我制作了一个非常基本的节点网络服务器,它运行一个 powershell 命令。 如果该 IP 上的站点已启动,则 powershell 命令只需返回 200 状态,如果该 IP 站点已关闭,则只需返回 400 状态。 我确信有更好的方法来实现这一点,但我能想到的最快方法是刷新页面,因此我将 invo ...

9 (节点)警告:可能检测到EventEmitter内存泄漏

我写了一个在cheerio.js和request.js之上构建的刮板脚本,以获取预订代理商网站之外的联系信息(URL和电子邮件)。 当它确实运行并返回我需要的所有信息时,我在运行它时连续五次收到以下警告: 我的直觉告诉我,由于我在另一个请求中嵌套了一个请求,因此我可能会收到此警告。 ...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2022 STACKOOM.COM