javascript-Node.js事件流:在哪里设置setMaxListeners?
作者:互联网
我搜索并搜索了此搜索,但无济于事.我已经梳理了网络(包括Stackoverflow)和Node文档,得到了答案,但没有找到一个可行的方法(也许这对我来说很不好).我正在使用gulp配置文件中的事件流,并且有一个特殊任务正在从EventEmitter类中遇到经典的“检测到内存泄漏”错误.根据我的发现,解决此问题的答案似乎是调用EventEmitter类的setMaxListeners方法.我的研究建议事件流具有一个Stream对象,该对象应该是EventEmitter的实例.但是,无论我以什么方式尝试调用setMaxListeners,都无法找到方法.在研究完这个问题之后,我想我会把它带到这里的Node专家中(我假设这很简单,只是缺少了一些东西).这是我的代码:
return eventStream.merge(
gulp.src('./jscript/libs/file-one.js'),
gulp.src('./jscript/libs/filder_one/file-two.js'),
gulp.src('./jscript/libs/folder_two/file-three.js'),
gulp.src('./jscript/libs/folder_three/file_four.js'),
gulp.src('./jscript/libs/folder_four/file_five.js'),
gulp.src('./jscript/libs/folder_five/file_six.js'),
gulp.src('./jscript/libs/file_seven.js'),
gulp.src('./jscript/libs/file_eight.js'),
gulp.src('./jscript/lists/rules/*.js')
)
.pipe(concat('my_file.js'))
.pipe(gulp.dest('./jscript/dist/'))
.pipe(rename('my_file.min.js'))
.pipe(uglify())
.pipe(gulp.dest('./jscript/dist/'));
谢谢!
解决方法:
这不是您问题的直接答案,但是您可以将一组glob模式传递给’gulp.src()’,而不是合并多个’gulp.src()’.它不能解决您的问题吗?
https://github.com/gulpjs/gulp/blob/master/docs/API.md#gulpsrcglobs-options
编辑
作为直接回答,以下对我有用:
var merged = eventStream.merge(...);
merged.setMaxListeners(0);
return merged.pipe(...);
在合并函数中添加事件侦听器后,似乎在事件循环的滴答声之间检查了侦听器计数.因此,我们可以在添加侦听器后立即设置setMaxListeners.
标签:eventemitter,javascript,node-js,gulp,event-stream 来源: https://codeday.me/bug/20191012/1900967.html