Node.js错误:在使用http.request时连接ECONNREFUSED

19

我正在排除一个Node.js脚本的问题,已经删除了几乎所有代码,但仍然能够复制以下错误:

{ 
  [Error: connect ECONNREFUSED]
  stack: 'Error: connect ECONNREFUSED 
          at exports._errnoException (util.js:682:11) 
          at Object.afterConnect [as oncomplete] (net.js:947:19)',
  code: 'ECONNREFUSED',
  errno: 'ECONNREFUSED',
  syscall: 'connect' 
}

整个脚本如下:

var http = require('http');

http.get("http://api.hostip.info/get_json.php", function(res) {
    console.log("Received response: " + res.statusCode);
});

var req = http.request(function(res) {
    console.log("Request began");
    var output = '';

    res.on('data', function (chunk) {
        output += chunk;
    });

    res.on('end', function () {
        console.log('Request complete:');
        console.log(output);
    });
});

req.on('error', function (err) {
    console.log(err);
    //console.log('error: ' + err.message);
});

req.end();
console.log("Script complete");

我相信这只是代码中某个简单错误,但一直未能确定问题所在?

2个回答

22

http.request中,您没有提供URL。

尝试使用以下代码:var req = http.request("someurlhere", function(res) { ... 等等。

此外,如果您像这样使用http.request,我无法完全看出以下代码块的目的(可能是剩余的已完成脚本的残留部分?)

http.get("http://api.hostip.info/get_json.php", function(res) {
    console.log("Received response: " + res.statusCode);
});

啊!你说得对,像这样添加它是可以工作的 var req = http.request("http://api.hostip.info/get_json.php", function(res) { - jfcallo
非常感谢,是我犯了一个简单的错误。我还不能接受你的答案,因为它仍然显示剩余5分钟。 - jfcallo

0

这个问题变得很受欢迎,所以我想向您介绍一个流行的NodeJS库,它可以使请求变得更加容易。

我选择它是因为它使用与浏览器API fetch 相同的语法。因此,学习相同的语法总是更好的选择。

它还使用了新的Promise语法,因此您可以使用 async/await

var fetch=require('node-fetch')
var data=await fetch(url);
var text=await data.text()

了解更多:


从 Node 18 开始,您不需要第三方库。Fetc API 现在已经本地支持。 - Mike 'Pomax' Kamermans

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接