Error : getaddrinfo ENOTFOUND in node.js

本文探讨在使用Node.js学习过程中遇到的序列流处理错误问题,包括文件操作、HTTP请求、RSS文件读取与解析等关键步骤,并详细分析了错误原因及解决方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在学习《Node.js In Action》时,第三章Node programming fundamentals中有讲如何处理serial flow的方法,将例子敲到电脑上却发现会报错,例子如下:

var fs = require('fs');
var request = require('request');
var htmlparser = require('htmlparser');
var configFilename = './rss_feeds.txt';

function checkForRSSFile () {
  fs.exists(configFilename, function(exists) {
    if (!exists) {
      return next(new Error('Missing RSS file: ' + configFilename));
    }
    console.log(exists);
    next(null, configFilename);
  });
}

function readRSSFile(configFilename) {
  fs.readFile(configFilename, function(err, feedList) {
    if (err) return next(err);

    feedList = feedList
              .toString()
              .replace(/^\s+|\s+$/g, '')
              .split("\n");
    var random = Math.floor(Math.random()*feedList.length);
    console.log(feedList[random]);
    next(null, feedList[random]);
  });
}

function downloadRSSFeed(feedUrl) {
  request({uri: feedUrl}, function(err, res, body) {
    if (err) return next(err);
    if (res.statusCode != 200) {
      return next(new Error('Abnormal response status code'));
    }
    console.log(body);
    next(null, body);
  });
}



function parseRSSFeed (rss) {
  var handler = new htmlparser.RssHandler();
  var parser = new htmlparser.Parser(handler);
  parser.parseComplete(rss);

  if (!handler.dom.items.length) {
    return next(new Error('No RSS items found'));
  }
  var item = handler.dom.items.shift();
  console.log(item.title);
  console.log(item.link);
}

var tasks = [ downloadRSSFeed,
              parseRSSFeed ];

function next(err, result){
  if (err) throw err;
  var currentTask = tasks.shift();

  if(currentTask) {
    currentTask(result);
  }
}

next();



它总是会报:

Error: getaddrinfo ENOTFOUND    at errnoException (dns.js:37:11)    at Object.onanswer [as oncomplete] (dns.js:124:16)

在查阅https://github.com/mikeal/request时看到

Super simple to use

Request is designed to be the simplest way possible to make http calls. It supports HTTPS and follows redirects by default.

var request = require('request');
request('http://www.google.com', function (error, response, body) {
  if (!error && response.statusCode == 200) {
    console.log(body) // Print the google web page.
  }
})

还是会报错,在网上查了好久都没有找到解决方法,暂时记录在此。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值