我试图运行nodejs程序并获得错误:
if (err) throw err;
^
Error: connect ECONNREFUSED 54.144.222.65:80
at Object._errnoException (util.js:1024:11)
at _exceptionWithHostPort (util.js:1046:20)
at TCPConnectWrap.afterConnect [as oncomplete] (net.js:1182:14)现在,我搜索和搜索Stack溢出,有几个相关的问题。但不要把这个问题标记为“已经解决了”,因为所有这些问题都有解决不了问题的答案。(例如,有些需要连接到正在运行但没有运行的本地服务器,并且answe是“运行服务器”,但我的问题不是这样的)
我认为最接近我的问题是对这个问题的公认的答案。我也是公司代理人的幕后黑手。但我做了答案所建议的,我的代理人已经确定了正确的代理。
我还做了npm config list我得到了
; cli configs
metrics-registry = "https://registry.npmjs.org/"
scope = ""
user-agent = "npm/5.5.1 node/v8.9.1 win32 x64"
; userconfig C:\Users\me\.npmrc
http-proxy = "http://192.168.1.252:8080"
https-proxy = "http://192.168.1.252:8080/"
proxy = "http://192.168.1.252:8080/"
registry = "https://registry.npmjs.org/"
strict-ssl = false
; builtin config undefined
prefix = "C:\\Users\\me\\AppData\\Roaming\\npm"
; node bin location = C:\Program Files\nodejs\node.exe
; cwd = D:\me\path\to\code_Node.js\code\3\random_story
; HOME = C:\Users\me
; "npm config ls -l" to show all defaults.问题
我试着运行这段代码
var fs = require('fs');
var request = require('request');
var htmlparser = require('htmlparser');
var configFilename = './rss_feeds.txt';
function checkForRSSFile () {
fs.exists(configFilename, function(exists) { //fs exists has been deprecated udr fs.stat() or fs.acess() instead
if (!exists)
return next(new Error('Missing RSS file: ' + configFilename));
console.log("Next for "+configFilename);
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("Next for feedList[random] "+ feedList[random]);
next(null, feedList[random]);
});
}
function downloadRSSFeed (feedUrl) {
request({uri: feedUrl}, function(err, res, body) {
if (err) throw err;//return next(err); //<=====HERE ! THE ERROR IS HERE!!
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 = [ checkForRSSFile,
readRSSFile,
downloadRSSFeed,
parseRSSFeed ];
*/
var tasks= [ checkForRSSFile,
readRSSFile,
downloadRSSFeed];
function next(err, result) {
if (err) throw err;
var currentTask = tasks.shift();
if (currentTask) {
currentTask(result);
}
}
next();如您所见,当试图抛出错误时,downloadRSSFeed中发生了错误。rss_feed.txt有一些rss附件,比如http://dave.smallpict.com/rss.xml。
编辑:我实际上在此链接中找到了这个问题的“解决方案”。(好吧,解决办法是一种延伸。它解决了这个问题,但我还没有能够连接到这些站点,但我想这不是程序的问题)
解决方案是将代理信息放入request中,如下所示
function downloadRSSFeed (feedUrl) {
request({uri: feedUrl,
'proxy':'http://192.168.1.252:8080'
},
function(err, res, body) {
if (err) throw err;//return next(err); //<=====HERE ! THE ERROR IS HERE!!
if (res.statusCode != 200)
return next(new Error('Abnormal response status code'))
console.log(body);
next(null, body);
});
}正如我说的,它还没有工作,我得到了一个异常的响应状态代码错误,但至少它似乎更进一步。
发布于 2018-11-12 09:57:05
ECONNREFUSED的错误听起来就像:连接被您试图连接的系统拒绝了,因为端口号80已经在另一个应用程序中使用了。更改端口号并尝试运行应用程序。
https://stackoverflow.com/questions/53259371
复制相似问题