node.js - 合并NodeJS流时如何调用 `setMaxListeners`

标签 node.js gulp eventemitter

我正在使用 gulpjs 来捆绑多组 css 文件。每个集合都被捆绑到自己的文件中,所以我的代码看起来像这样:

var es = require('event-stream');

gulp.task("bundle", function(){
  var streams = [];
  for(var i in sets) {
    var set = sets[i];
    var stream = gulp.src(set.sources)
                     .pipe(...)
                     .pipe(gulp.dest(set.destination));
    streams.push(stream);
  }
  var merged = es.concat.apply(es, streams);
  return merged;
});

所以它一直运行良好,但现在我的包已经足够大以至于我看到以下错误:

(node) warning: possible EventEmitter memory leak detected. 11 listeners added. Use emitter.setMaxListeners() to increase limit.

我尝试应用类似 this 的答案和 this但我似乎无法弄清楚在哪里调用 setMaxListeners(0)

在合并流时如何调用 setMaxListeners

最佳答案

看起来问题出在 event-stream 模块 ( see this issue )。

目前,我能够通过这行代码抑制问题。当然,这在全局范围内设置了最大值,这并不理想。

require('events').EventEmitter.prototype._maxListeners = 30;

看起来这个问题最终会在 stream-combiner 中解决,它是 event-stream 的依赖项。

关于node.js - 合并NodeJS流时如何调用 `setMaxListeners`,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22572574/

相关文章:

Angular2 "Output"回调

node.js - 使用 Passport 持久 session 时的 authToken 安全吗?

session - 快速 session 存储有些奇怪

node.js - 找不到模块 : Error: Cannot resolve module 'module' mongodb while bundling with webpack

ReactJS 组合建议

node.js - Nodejs在内存消息总线中使用EventEmitter进行跨模块通信

javascript - ES6导入声明+符号

javascript - gulp 浏览器同步只打开 chrome

javascript - gulp-svg-sprites 输出 [Object object] 而不是图标

c# - 响应来自父组件的子事件