Node.js不会让我控制台.log?

时间:2014-01-07 22:39:43

标签: node.js

var request = require('request');
var cheerio = require('cheerio');
var urls = [];


request('http://www.reddit.com', function(err, resp,body){
    if(err && resp.statusCode == 200){
        var $ = cheerio.load(body);
        $('a.title','#siteTable').each(function(){     //where they are located
            var url = this.attr('href');
            urls.push(url);
        });
        console.log(urls);   // print them
    }
});

系统:Mac

注意:我已安装requestcheerio

编译完程序后,没有错误。该程序的主要目的是请求站点,然后在html页面及其数据中找到每个“href”。问题是,没有数据输出。有人可以向我解释一下。提前致谢。

------意外输出---------

C:\Users\*****\Documents>node test.js 没有以html格式从网站打印数据。

C:\Users\******\Documents>

------预期的输出-------------------------

C:\Users\*****\Documents>node test.js

Web Site data printed.

C:\Users\******\Documents>

1 个答案:

答案 0 :(得分:3)

正如有人在评论中指出的那样,可疑线是:

if(err && resp.statusCode == 200)

错误可能是未定义的或null,因此,如果永远不会计算为true。您可以将其更改为:

if (!err && resp.statusCode == 200) 

但我可能会建议你在这里拆分逻辑,并使用===而不是==

if (err) {
    // do something to handle the err
}

if (resp.statusCode === 200) {
   // the rest of your logic.
}