参数列表后的节点丢失

时间:2018-03-26 03:31:27

标签: node.js

这可能是一个愚蠢的错误,但它花了我太长时间才找到答案

当我运行这个简单的程序(node index.js)时,我收到一个错误:

SyntaxError:missing)参数列表(第55行)

之后

你可以看到sublimelinter找不到任何东西

我试图再次删除并安装所有软件包

我已经三次检查了所有内容

var request = require('request');
var cheerio = require('cheerio');
var fs = require('fs');
var readLine = require('readline');

var URL_SEED= "https://g1.globo.com/";
var MAX_PAGES_TO_VISIT = 100;

var pagesVisited = []; //array, {objeto}
var numPagesVisited = 0;
var pagesToVisit = [];
var allAbsoluteLinks = [];
var url = new URL(URL_SEED); //pesq
var urlBase = url.protocol + "//" + url.hostname; //pesq

pagesToVisit.push(URL_SEED);
crawl();


//pegar href vs a

function crawl() {
  if(numPagesVisited >= MAX_PAGES_TO_VISIT) {
    console.log("Limites de páginas que posso visitar atingido (100)");
    return;
  }
  var nextPage = pagesToVisit.pop(); //peq
  if (nextPage in pagesVisited) {  //peq
    // pagina ja visitada
    crawl();
  } else {
    // pagina nao visitada
    visitaPagina(nextPage, crawl);
  }
}

function visitaPagina(url, callback) {
  // Add page to our set
  pagesVisiteu[url] = true;
  numPagesVisited++;  


  console.log("Visitando a página  " + url);
  // Faz requisicao
  request(url, function(error, response, body) {

     console.log("Status code: " + response.statusCode);
     if(response.statusCode !== 200) {
       callback();
       return;
     } else {
        // Parse do body
        var $ = cheerio.load(body);
        coletaLinks($);
     }
  }
}

function coletaLinks($) {

  //var linksRelativos = $("a\[href^='/'\]"); //NAO TA PEGANDO DO JEITO QUE
  var linksRelativos = $("a\[href^='/'\]");

  console.log("Achei " + linksRelativos.length + " links relativos nessa página");


  linksRelativos.each(function() {
    pagesToVisit.push(baseUrl + $(this).attr('href'));
  });


  console.log("\n\nPAGES TO VISIT = " + pagesToVisit + "\n\n");


  var key = []; 
  for (key in linksRelativos) {
    if(linksRelativos.hasOwnProperty(key)) { //realmente preciso ver essa property?
        console.log(key, linksRelativos\[key\].attribs.href);
      }
    } 



  fs.writeFile('relativos.txt', linksRelativos, function(err) {
    if(err) {
      return console.log(err);
      //throw err;
    }
  });
}

1 个答案:

答案 0 :(得分:1)

我不确定为什么你的linter没有抱怨,但你 错过request visitaPaginafunction visitaPagina(url, callback) { // Add page to our set pagesVisited[url] = true; numPagesVisited++; console.log("Visitando a página " + url); // Faz requisicao request(url, function(error, response, body) { console.log("Status code: " + response.statusCode); if(response.statusCode !== 200) { callback(); return; } else { // Parse do body var $ = cheerio.load(body); coletaLinks($); } } // should be }) } 电话中的结束括号。从底部开始的第二行:

       node-4.1.1-32bit
       node-4.1.1-64bit
 *     node-8.9.1-32bit             INSTALLED
       node-8.9.1-64bit

此外,在SO上复制代码时出现问题,您可能希望检查以后提交的内容是什么。在这种情况下,屏幕截图有所帮助,但您也应该知道代码图像通常不赞成使用SO。

祝你好运!