遍历请求时发生错误[ERR_HTTP_HEADERS_SENT]

时间:2018-07-14 00:30:22

标签: node.js express

我正在构建一个Web抓取API,用于从页面取回所有工作链接。我一直在收到“错误[ERR_HTTP_HEADERS_SENT]:将标头发送到客户端后无法设置标头”,当我尝试使用res.send-发送结果-这是所有工作链接的简单文本... i猜猜我在res.send的工作方式上做错了......

    var express = require('express');
    var app = express();
    var request = require('request');
    var cheerio = require('cheerio');
    var url = 'https://www.pardes-hanna-karkur.muni.il/';

    app.get('/webscrap', function (req, res,next) {

    request(url, function(error, response, body){

      if(!error && response.statusCode == 200){
            $ = cheerio.load(body);
          links = $('a'); //jquery get all hyperlinks
      $(links).each(function(i, link){
        var linkRecieved = $(link).attr('href');
        if (linkRecieved.indexOf('www') > -1){
          var outStr='';
          request(linkRecieved, function(error, response, body){
            if(!error && response.statusCode == 200){
              res.send(linkRecieved);
              next();

            } else {
              res.send('false');
              next();
            }
          });

        }

      });

      }

    });

    })

    var server = app.listen(8081, function () {
      var host = server.address().address
      var port = server.address().port

      console.log( port)
    })

1 个答案:

答案 0 :(得分:0)

之所以发生这种情况,是因为您只能为请求发送响应一次,在您的代码上,它将在每次循环执行时都尝试发送响应而没有错误,尝试从外部循环发送响应