【问题标题】:Node.js event-stream: Where to setMaxListeners?Node.js 事件流:在哪里设置 MaxListeners?
【发布时间】:2014-03-09 16:14:55
【问题描述】:

我已经搜索并搜索了这个,但无济于事。我已经梳理了网络(包括 Stackoverflow)和 Node 文档以寻求答案,但没有找到一个可行的答案(也许这对我来说只是不好的搜索)。我正在处理 gulp 配置文件中的事件流,并且我有一个特定的任务正在从 EventEmitter 类中遇到经典的“检测到内存泄漏”错误。根据我的发现,处理这个问题的答案似乎是调用 EventEmitter 类的 setMaxListeners 方法;我的研究表明事件流有一个 Stream 对象,它应该是 EventEmitter 的一个实例。但是,无论我尝试调用 setMaxListeners 的方式,我都找不到方法。在精疲力尽地研究这个问题之后,我想我会把它带到这里的节点专家那里(我假设这很简单,我只是错过了一些东西)。这是我的代码:

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/'));

谢谢!

【问题讨论】:

    标签: javascript node.js eventemitter gulp event-stream


    【解决方案1】:

    在 Node.js 0.12(即将发布)中,您将能够为所有发射器设置最大值:

    var events = require('events');
    events.EventEmitter.defaultMaxListeners = 100;
    

    更多在相关commit

    【讨论】:

    • 非常有帮助(我会期待那个版本)。谢谢。
    【解决方案2】:

    这不是您问题的直接答案,但您可以将 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(...);
    

    虽然在合并函数中添加了事件侦听器,但似乎在事件循环的滴答声之间检查了侦听器计数。所以我们可以在添加监听器后立即设置MaxListeners。

    【讨论】:

    • 谢谢!这解决了我的问题;但是,是的,它是间接的,我仍然很好奇如何在事件流上实际设置 EventEmitter.setMaxListeners——以防我在其他情况下可能需要它(如果有人知道的话)。跨度>
    • 添加了直接答案。
    • 你摇滚!再次感谢!
    猜你喜欢
    • 2016-09-17
    • 1970-01-01
    • 1970-01-01
    • 2013-09-08
    • 1970-01-01
    • 2011-09-08
    • 1970-01-01
    • 1970-01-01
    • 2019-04-02
    相关资源
    最近更新 更多