javascript - Node.JS:带有请求模块的简单 GET 抛出 "Possible EventEmitter memory leak detected"

标签 javascript python node.js web-scraping request

尝试了解网页抓取的基础知识,并成功使用 Python 实现了这一点。当尝试使用 Node 进行模拟时,出现以下错误:

检测到可能的 EventEmitter 内存泄漏。添加了 11 个管道监听器。使用emitter.setMaxListeners()增加限制

下面是尝试使用node scrape.js运行的简单代码片段:

const request = require('request');

const uri = 'https://www.somewebsite.com/auth/get_menu/?city_id=1';
const headers = {
    'accept': '*/*',
    'content-type': 'application/json',
    'app_client': 'consumer_web'
};

process.on('warning', e => console.warn(e.stack));

request({uri, headers, method: 'GET'}, (err, response, body) => {
    if(!err){
        console.log(response);

        console.log(body);
    }
});

请告诉我哪里做错了。提前致谢。

最佳答案

看起来您尝试废弃的网站会生成无限循环并禁用 cookie,因此您需要在发出请求时启用它们。有些人认为这样应该可行。

const request = require("request");

const uri = "https://www.bigbasket.com/auth/get_menu/?city_id=1";
const headers = {
  accept: "*/*",
  "content-type": "application/json",
  app_client: "consumer_web"
};

process.on("warning", e => console.warn(e.stack));

request({ uri, headers, method: "GET", "jar": true }, (err, response, body) => {
  if (!err) {
    console.log(response);

    console.log(err);
  }
});

jar 设置为 true 就是这里的技巧。

顺便说一句,请求模块越来越无人维护,因此最好使用一些现代包,例如 gotaxios 等。希望这会有所帮助

关于javascript - Node.JS:带有请求模块的简单 GET 抛出 "Possible EventEmitter memory leak detected",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59809253/

相关文章:

javascript - 在函数中初始化、添加、保存局部变量,并使用函数访问该变量

javascript - 从 Node.JS 中的两个网站请求 RSS 提要

javascript - 推送复合数组元素

python - 不止一个元组 *args

python - 列出命名空间包的所有子包

c# - 根据文件名选择数千个文件

javascript - 来自 AngularJS POST 请求的 Node.js 数据未定义

regex - node.js - 将正则表达式发送到服务器

javascript - 从 javascript 代码提交到 spring Controller

php - Javascript "window.location"停止 PHP 重定向