Node.js未处理的“error”事件

35

我已经编写了一段简单的代码并将其保存在 try.js 文件中。

var http = require('http');
var makeRequest = function(message) {
  var options = {
    host: 'localhost', port: 8080, path: '/', method: 'POST'
  }
  var request = http.request(options, function(response){
    response.on('data', function(data){
      console.log(data);
    });
  });

  request.write(message);
  request.end();
}
makeRequest("Here's looking at you, kid.");

我在终端运行时出现了错误

throw er; // Unhandled 'error' event,
Error: connect ECONNREFUSED
at errnoException (net.js:884:11)
at Object.afterConnect [as oncomplete] (net.js:875:19)error' event

我尝试更改了端口,但仍然无法工作。 - ana
6个回答

46

对我来说,问题在于另一个实例正在运行。搜索正在运行的其他节点实例并将其停止。之后应该可以正常恢复。


1
这个回答实际上帮助了我解决"Unhandled 'error' event"的问题。 - huggie
这也发生在我的Windows电脑上,关闭了所有的node命令提示符,重新打开它们后,它又开始工作了。真是匪夷所思。 - Pier-Luc Gendreau
1
我有另一个实例在运行。果然,我杀掉了它,错误就消失了。 - user3344977
我还有另一个实例在运行。谢谢。 - Johncy

12

7

同一端口8080上已经运行了另一个服务器,因此您需要关闭并重新启动您的实例。

查找正在运行的实例

$ netstat -nlp | grep 8080

(Not all processes could be identified, non-owned process info
 will not be shown, you would have to be root to see it all.)
tcp6       0      0 :::8881                 :::*                    LISTEN      28207/node    

使用进程ID终止现有的服务器实例

$ kill -9 28207

启动实例

$ node server.js 

0

更改端口号。因为您的端口已经在运行中。

端口号如:8000、8001、3000、3001、8080等。

 app.listen(3030,()=>{})

(或) 杀掉您的端口号。 如果您使用Ubuntu操作系统,请按照以下步骤操作。

  1. 使用此命令在终端中查找PID或TCP: sudo netstat -ap | grep:“端口号”
  2. 使用此命令结束进程: kill -9“过程ID或TCP ID”
  3. 运行NodeJs

0

另一个服务器正在使用相同的端口8080,因此请更改此代码中的端口或关闭端口8080并重新启动它。


0

在相同的端口上已经有一个不同的进程正在运行。要么终止该进程,要么在当前代码中更改端口号。这样您的问题就会得到解决!


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