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

时间:2013-12-10 07:27:17

标签: node.js

我正在对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 个答案:

答案 0 :(得分:21)

您尚未在http.request中提供网址。

尝试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);
});

答案 1 :(得分:0)

这个问题开始流行,因此我想向您介绍一个流行的NodeJS库,它使请求变得更加轻松。

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

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

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

了解详情: