警告:检测到可能的 EventEmitter 内存泄漏。 11 AppUp > 添加了听众。使用 emitter.setMaxListeners() 增加限制
warning: possible EventEmitter memory leak detected. 11 AppUp > listeners added. Use emitter.setMaxListeners() to increase limit
我正在使用以下事件发射器(并且我需要此功能)。
我的问题是如何避免错误。
我好像在另一个事件中使用事件。
warning: possible EventEmitter memory leak detected. 11 AppUp
listeners added. Use emitter.setMaxListeners() to increase limit.
我正在使用节点 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
};
有没有办法避免这个错误?
每次调用 运行App 函数时,它都会为 AppUp 事件设置一个侦听器。因此,如果您多次调用 运行App 函数,则 运行 函数将被调用的次数与您之前调用 运行App 的次数相同,加上 AppUp 事件发出时的实际调用次数。
可能的解决方案是通过以下修改仅监听一次 AppUP 事件:
appStatus.eventEmitter.once('AppUp', function () {
run(req, res);
});
我正在使用以下事件发射器(并且我需要此功能)。 我的问题是如何避免错误。
我好像在另一个事件中使用事件。
warning: possible EventEmitter memory leak detected. 11 AppUp listeners added. Use emitter.setMaxListeners() to increase limit.
我正在使用节点 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
};
有没有办法避免这个错误?
每次调用 运行App 函数时,它都会为 AppUp 事件设置一个侦听器。因此,如果您多次调用 运行App 函数,则 运行 函数将被调用的次数与您之前调用 运行App 的次数相同,加上 AppUp 事件发出时的实际调用次数。
可能的解决方案是通过以下修改仅监听一次 AppUP 事件:
appStatus.eventEmitter.once('AppUp', function () {
run(req, res);
});