【问题标题】:warning: possible EventEmitter memory leak detected. 11 AppUp > listeners added. Use emitter.setMaxListeners() to increase limit警告:检测到可能的 EventEmitter 内存泄漏。 11 AppUp > 添加了监听器。使用emitter.setMaxListeners() 增加限制
【发布时间】:2016-06-12 09:43:05
【问题描述】:

我正在使用以下事件发射器(我需要此功能)。 我的问题是如何避免错误。

似乎我在另一个事件中使用事件。

警告:检测到可能的 EventEmitter 内存泄漏。 11 应用程序 听众补充道。使用emitter.setMaxListeners() 增加限制。

我正在使用节点 0.12.7

这是所有模块代码:

var events = require('events');
var eventEmitter = new events.EventEmitter();

var run = function (req, res) {
        host = req.headers.host.split(':')[0];
        proxy.web(req, res, {
            target: 'http://' + host + ':' + port
        });
};


var runApp = function (req, res) {
    appStatus.eventEmitter.on('AppUp', function () {
        run(req, res);
    });
    if (model.get()) {
        run(req, res);
    }

}


module.exports = {
    runApp: runApp
};

有没有办法避免这个错误?

【问题讨论】:

    标签: javascript node.js memory-leaks eventemitter


    【解决方案1】:

    每次调用 runApp 函数时,它都会为 AppUp 事件设置一个侦听器。因此,如果您多次调用 runApp 函数,则调用 run 函数的次数将与您之前调用 runApp 的次数加上 AppUp 事件发出时的实际调用次数相同。

    可能的解决方案是只监听一次 AppUP 事件,并进行以下修改:

    appStatus.eventEmitter.once('AppUp', function () {
        run(req, res);
    });
    

    【讨论】:

      猜你喜欢
      • 2012-12-08
      • 2012-09-04
      • 2016-10-08
      • 2014-01-03
      • 1970-01-01
      • 2018-11-15
      • 2021-03-13
      • 1970-01-01
      • 2022-10-21
      相关资源
      最近更新 更多