如何处理"未处理"错误'事件'错误 - NodeJS

seg*_*ter 4 javascript http node.js

我想尝试接收Node.js. 这是我正在玩的非常简单的代码

var http = require('http');
http.get('www.google.com', function(res) {
  console.log(res.statusCode);
});
Run Code Online (Sandbox Code Playgroud)

运行此代码时出现以下错误

events.js:141
      throw er; // Unhandled 'error' event
      ^

Error: connect ECONNREFUSED 127.0.0.1:80
    at Object.exports._errnoException (util.js:837:11)
    at exports._exceptionWithHostPort (util.js:860:20)
    at TCPConnectWrap.afterConnect [as oncomplete] (net.js:1060:14)
Run Code Online (Sandbox Code Playgroud)

在读取错误输出时,我添加了两行代码来处理错误事件,如下所示

var http = require('http');
http.get('www.google.com', function(res) {
  console.log(res.statusCode);
  res.on('error', function(error) {
    console.error(error);
  });
});
Run Code Online (Sandbox Code Playgroud)

但同样的错误信息仍然存在,我在哪里搞砸了?

Dan*_* D. 7

http.get除非您指定options为对象,否则必须使用URL而不是域名:

options可以是对象或字符串.如果options是字符串,则会自动解析url.parse().

相比:

var http = require('http');
http.get('http://www.google.com/', function(res) {
  console.log(res.statusCode);
});
Run Code Online (Sandbox Code Playgroud)

附:

var http = require('http');
http.get({host:'www.google.com'}, function(res) {
  console.log(res.statusCode);
});
Run Code Online (Sandbox Code Playgroud)

这两项工作.


注意我认为这是一个网络问题,但实际上host,选项中的默认值是localhost这样,当它无法解析字符串并保留默认选项时.好像代码是:

var http = require('http');
http.get({}, function(res) {
  console.log(res.statusCode);
});
Run Code Online (Sandbox Code Playgroud)