一尘不染

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

node.js

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

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

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

EADDRINUSE, Address already in use

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

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


阅读 290

收藏
2020-07-07

共1个答案

一尘不染

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

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

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

2020-07-07