Node.js不会让我console.log?

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页面及其数据中find每个“href”。 问题是,没有数据输出。 有人可以解释给我。 提前致谢。

——意外的输出———

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

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

——预期输出————————-

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

Web Site data printed.

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

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

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

err可能是未定义的或为null,所以如果从不计算为true。 您可以将其更改为:

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

但是我可能会推荐你在这里把逻辑分开,并且使用===而不是==

 if (err) { // do something to handle the err } if (resp.statusCode === 200) { // the rest of your logic. }