我正在对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");
我确信这在代码中某处是一个简单的错误,但一直无法识别问题?
答案 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()