简体   繁体   English

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

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

I am using gulp, browserify, watchify and factor bundle to build several javascript files in development. 我正在使用gulp,browserify,watchify和factor bundle来构建开发中的多个javascript文件。 Everything works fine, excepts after some time I start seeing this warning: 一切正常,除了一段时间后我开始看到此警告:

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.

Below is my gulpfile 下面是我的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/'))
    });
}

I read I should set max listeners somewhere but I am afraid this might be a geniune memory leak. 我读过我应该在某个地方设置最大侦听器,但是我担心这可能是真正的内存泄漏。

My initial solution didn't work, and it looks like it really is a bug. 我最初的解决方案无效,看起来确实是一个错误。 I think I've found a temporary hacky fix though. 我想我已经找到了一个临时的hacky修复程序。

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

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

Your original code should work. 您的原始代码应该可以工作。

Here's the GitHub issue for anyone who's keeping score :D 这是GitHub得分谁保持得分的人:D

暂无
暂无

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

相关问题 (节点)警告:可能检测到EventEmitter内存泄漏 - (node) warning: possible EventEmitter memory leak detected WDIO 5:检测到可能的EventEmitter内存泄漏 - WDIO 5 : Possible EventEmitter memory leak detected (节点:125008)MaxListenersExceededWarning:检测到可能的 EventEmitter 内存泄漏 - (node:125008) MaxListenersExceededWarning: Possible EventEmitter memory leak detected Discord.js 错误 - MaxListenersExceededWarning: 可能的 EventEmitter memory 检测到泄漏 - Discord.js Error - MaxListenersExceededWarning: Possible EventEmitter memory leak detected 检测到可能的 EventEmitter 内存泄漏。 Discord.js - Possible EventEmitter memory leak detected. Discord.js 安装 nodemon 时出错 - 检测到可能的 EventEmitter memory 泄漏 - Error installing nodemon - Possible EventEmitter memory leak detected Electron-React:MaxListenersExceededWarning:检测到可能的 EventEmitter memory 泄漏。 21 个 updateDeviceList 监听器添加到 [EventEmitter] - Electron-React: MaxListenersExceededWarning: Possible EventEmitter memory leak detected. 21 updateDeviceList listeners added to [EventEmitter] “检测到EventEmitter内存泄漏”错误导致崩溃 - “EventEmitter memory leak detected” errors causing crashes Node.js“检测到EventEmitter内存泄漏” - Node.js “EventEmitter memory leak detected” Node.JS:带有请求模块的简单 GET 抛出“检测到可能的 EventEmitter 内存泄漏” - Node.JS: Simple GET with request module throwing "Possible EventEmitter memory leak detected"
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM