当前位置: 首页 > 面试题库 >

节点/ Express:EADDRINUSE,地址已在使用中-终止服务器

邵鸿福
2023-03-14
问题内容

我有一个使用connect在node.js中运行的简单服务器:

var server = require('connect').createServer();
//actions...
server.listen(3000);

在我的代码中,我有实际的处理程序,但这就是基本思想。我一直遇到的问题是

EADDRINUSE, Address already in use

在先前崩溃或错误后再次运行我的应用程序时,我收到此错误。由于我没有打开终端的新实例,因此我用关闭了该过程ctr + z

我可以肯定,我要做的就是关闭服务器或连接。我打过电话server.close()process.on('exit', ...);,没有运气。


问题答案:

process.on('exit', ..)如果进程崩溃或被杀死,则不会调用。它只能被称为当事件循环结束,而且由于server.close()
某种 目的的事件循环(它仍必须等待目前跑这里堆有),这是没有意义的把该退出事件中…

崩溃时,执行process.on('uncaughtException', ..)并杀死时执行process.on('SIGTERM', ..)

话虽如此,SIGTERM(默认终止信号)可以清除应用程序,而SIGKILL(立即终止)则不允许应用程序执行任何操作。



 类似资料:
  • 问题内容: 运行webdriver时,运行3分钟后,出现以下异常,导致Webdriver崩溃。 我仅使用一个webdriver实例和一个FirefoxDriver配置文件。 问题答案: 您的出站端口已用完。这意味着您在两分钟之内执行了数千个出站连接。解决方案:使用连接池,或降低程序速度。

  • 我试图在Ubuntu 12.04中运行以下命令 并得到以下错误 在检查8080端口时,输出是 我的问题 为什么我会犯错误,以及如何消除这个错误?

  • 我目前正在开发一个简单的多人游戏,服务器客户端需要连接到服务器。 我的服务器由一个服务器套接字组成。这个serverSocket接受传入的连接,并将它们交给启动单独线程的连接对象。 客户端打开一个新套接字并连接到此服务器。 现在,如果我使用

  • 问题内容: 在我的Python套接字程序中,有时需要用中断它。当我这样做时,它确实使用关闭了连接。 但是,当我尝试重新打开它时,我必须等待一分钟左右才能重新连接。如何正确关闭插座?还是打算这样做? 问题答案: 是的,这是有意的。在这里您可以阅读详细说明。通过在套接字上设置SO_REUSEADDR选项,可以覆盖此行为。例如:

  • 问题内容: 我正在尝试从Mac终端使用python设置服务器。 我导航到文件夹位置的一种用法: 但这给了我错误: 之前,我曾使用同一命令为计算机中不同位置的其他网站打开连接。 问题答案: 您已经有一个绑定到默认端口(8000)的进程。如果您之前已经运行过相同的模块,则很可能该进程仍绑定到端口。首先尝试找到其他进程: 包含命令参数,因此,如果有多个进程处于活动状态,则可以发现其中一个正在运行。您可能

  • 节点导出器始终运行在本地计算机localhost:9100上,即使我没有在终端出现以下错误消息的情况下执行它: 通过它,我可以理解这个端口号已经被另一个应用程序使用了,但问题是我没有任何东西托管在那里。这是netstat grep 9100给出的内容: