繁体   English   中英

外部网站内容+可能检测到EventEmitter内存泄漏。 添加了11位听众。 使用generator.setMaxListeners()增加限制

External website content + possible EventEmitter memory leak detected. 11 listeners added. Use emitter.setMaxListeners() to increase limit

提示:本站收集StackOverFlow近2千万问答,支持中英文搜索,鼠标放在语句上弹窗显示对应的参考中文或英文, 本站还提供   中文繁体   英文版本   中英对照 版本,有任何建议请联系yoyou2525@163.com。

我使用节点js,并且数组列表中有100个或更多URL。 我正在尝试获取所有url的元数据。 所以我用了“请求”和“ cheerio”包。

var request = require('request');
var cheerio = require('cheerio');

var resultData = ["http://www.realsimple.com/food-recipes/9-healthy-predinner-snacks", "http://www.womenshealthmag.com/weight-loss/100-calorie-snacks", "https://www.pinterest.com/explore/healthy-snacks/", "http://www.rd.com/slideshows/healthy-snacks-for-adults/", "http://greatist.com/snacking", "http://www.bodybuilding.com/fun/26-best-healthy-snacks.html"];

var keyObject = new Array();

for (var index in resultData) {
    var resourceUrl = resultData[index];
    request(resourceUrl, function(error, response, html) {
       if (!error && response.statusCode == 200) {         
       var $ = cheerio.load(html);
       $('meta').each(function(i, element) {
            if ((element.attribs.name == 'Keywords') || (element.attribs.name == 'keywords')) {             
               var keyObject = new Object();
               keyObject.url = response.request.uri.href;
               keyObject.key = element.attribs.content;
               resourceDetails.push(keyObject);
            }
       });
      }
   });
}

一旦运行代码,我最多可获得5到10个结果。 然后我得到错误:

(node) warning: possible EventEmitter memory leak detected. 11 listeners added. Use emitter.setMaxListeners() to increase limit.
Trace at Request.EventEmitter.addListener (events.js:160:15)

然后我在谷歌搜索需要添加循环self.setMaxListeners(0);

var keyObject = new Array();

for (var index in resultData) {
    var resourceUrl = resultData[index];
    request(resourceUrl, function(error, response, html) {
       if (!error && response.statusCode == 200) {
       self.setMaxListeners(0);
       var $ = cheerio.load(html);
       $('meta').each(function(i, element) {
            if ((element.attribs.name == 'Keywords') || (element.attribs.name == 'keywords')) {             
               var keyObject = new Object();
               keyObject.url = response.request.uri.href;
               keyObject.key = element.attribs.content;
               resourceDetails.push(keyObject);
            }
       });
      }
   });
}

但是我没有任何输出。 我不知道现在要走正确的路。

输出除外:

[{"url" : "http:example.com", "key" : "metadata list"},{"url" : "http:example.com", "key" : "metadata list"},{"url" : "http:example.com", "key" : "metadata list"},{"url" : "http:example.com", "key" : "metadata list"},{"url" : "http:example.com", "key" : "metadata list"},{"url" : "http:example.com", "key" : "metadata list"}]  etc
问题暂未有回复.您可以查看右边的相关问题.
2 MaxListenersExceededWarning:检测到可能的 EventEmitter 内存泄漏。 添加了 11 个消息列表。 使用emitter.setMaxListeners() 增加限制

我知道这可能会标记为重复的解决方案,但堆栈溢出的解决方案对我不起作用。 问题 我的代码库很大,有时我会遇到这个错误,我不知道为什么会这样。 我试图增加听众限制,但不幸的是,它不起作用。 更新 经过一些浏览后,我运行此命令来跟踪警告 原来是我的 socket.io 代码是我在 Redis ...

6 下载多个SFTP文件时NodeJS错误“检测到可能的EventEmitter内存泄漏。 添加了11个错误侦听器”

使用ssh2-sftp-client库从SFTP站点下载多个文件时出现错误。 抛出的错误似乎表明在每次下载完成后未清除节点流。 这导致我的应用程序发生内存泄漏。 在生产环境中,我需要能够下载数千个文件,因此这种内存泄漏非常严重。 如何关闭流,以便在下载每个文件后释放内存? 码: ...

8 activemq 2位听众

我在grails中使用activemq插件。 当我在tomcat中部署2个使用activemq的war文件时,tomcat永远不会完成启动。 是因为使用了端口吗? 我在WAR A中的服务方法: 我在B战中的服务方式 ...

9 socket io 检测到可能的 EventEmitter 内存泄漏

一旦事件完成,我想删除 Listener 以避免在 socket io 中出现这个问题。 我收到此错误 MaxListenersExceededWarning:检测到可能的 EventEmitter 内存泄漏。 添加了 11 个连接侦听器。 使用emitter.setMaxListeners ...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2022 STACKOOM.COM