Node.js 节点使用错误-真正的解决方案?
我在ubuntu上运行node,不断收到“打开端口时出错:8080…”,即EADDRINUSE错误 我基本上了解问题所在,但当我寻找解决方案时,我基本上会遇到关于终止流程的最佳方式的争论。另一件事是人们说您需要使用ctrl+c而不是ctrl+z,这不是问题,因为我总是使用ctrl+c,即使nodemon重新启动服务器,我也会遇到这个错误 有真正的解决办法吗?每次都要扼杀这一过程既笨拙又丑陋。另外,我一小时要做20次。更糟糕的是,当我终止这个过程时,这有时会杀死我的邮递员 那么,是否有一个真正的解决方案。按优先顺序:Node.js 节点使用错误-真正的解决方案?,node.js,port,nodemon,Node.js,Port,Nodemon,我在ubuntu上运行node,不断收到“打开端口时出错:8080…”,即EADDRINUSE错误 我基本上了解问题所在,但当我寻找解决方案时,我基本上会遇到关于终止流程的最佳方式的争论。另一件事是人们说您需要使用ctrl+c而不是ctrl+z,这不是问题,因为我总是使用ctrl+c,即使nodemon重新启动服务器,我也会遇到这个错误 有真正的解决办法吗?每次都要扼杀这一过程既笨拙又丑陋。另外,我一小时要做20次。更糟糕的是,当我终止这个过程时,这有时会杀死我的邮递员 那么,是否有一个真正的解
error opening port: 8080
{ Error: listen EADDRINUSE :::8080
at Object._errnoException (util.js:1022:11)
at _exceptionWithHostPort (util.js:1044:20)
at Server.setupListenHandle [as _listen2] (net.js:1351:14)
at listenInCluster (net.js:1392:12)
at Server.listen (net.js:1476:7)
at Function.listen (/home/ksjazzguitar/Programming/test/jwt5/server/node_modules/express/lib/application.js:618:24)
at Object.<anonymous> (/home/ksjazzguitar/Programming/test/jwt5/server/server.js:46:5)
at Module._compile (module.js:643:30)
at Object.Module._extensions..js (module.js:654:10)
at Module.load (module.js:556:32)
at tryModuleLoad (module.js:499:12)
at Function.Module._load (module.js:491:3)
at Function.Module.runMain (module.js:684:10)
at startup (bootstrap_node.js:187:16)
at bootstrap_node.js:608:3
code: 'EADDRINUSE',
errno: 'EADDRINUSE',
syscall: 'listen',
address: '::',
port: 8080 }
打开端口时出错:8080
{错误:侦听EADDRINUSE::8080
对象处的错误异常(util.js:1022:11)
at_例外WithHostPort(util.js:1044:20)
在Server.setupListenHandle[as _listen2](net.js:1351:14)
在listenInCluster(net.js:1392:12)
在Server.listen(net.js:1476:7)
在Function.listen(/home/ksjazzguit/Programming/test/jwt5/server/node_modules/express/lib/application.js:618:24)
在对象上。(/home/ksjazzguit/Programming/test/jwt5/server/server.js:46:5)
在模块处编译(Module.js:643:30)
在Object.Module._extensions..js(Module.js:654:10)
在Module.load(Module.js:556:32)
在tryModuleLoad时(module.js:499:12)
在Function.Module.\u加载(Module.js:491:3)
位于Function.Module.runMain(Module.js:684:10)
启动时(bootstrap_node.js:187:16)
在bootstrap_node.js:608:3
代码:'EADDRINUSE',
错误号:'EADDRINUSE',
syscall:'listen',
地址:':',
端口:8080}
回答3和2
3) 你可以用这个来结束这个过程
# where 8080 is your port
sudo kill <(sudo lsof | grep 'TCP \*:8080 (LISTEN)' | awk '{print $2}' | sort -u)
#其中8080是您的端口
sudo kill在我的一个节点服务器中,我添加了以下内容:
const processExitHandler = async (error) => {
await this.destroy();
if(error) console.log(error);
process.exit(error ? 1 : 0);
};
process.on('exit', processExitHandler);
process.on('SIGINT', processExitHandler); // Catches ctrl+c
process.on('SIGUSR1', processExitHandler); // SIGUSR1 and SIGUSR2 are for `kill pid` (ex: nodemon restart)
process.on('SIGUSR2', processExitHandler);
process.on('uncaughtException', processExitHandler);
this.destroy
停止Web服务器和数据库连接
以下是我的监视脚本,用于编译/重新启动更改:
"watch:build": "babel src --out-dir lib --source-maps --watch",
"watch:run": "nodemon lib/index.js",
"watch": "npm run watch:build & (sleep 1 && npm run watch:run)",
我只是在pkg.json中添加了一个标志--delay 1500ms,它就成功了
"scripts": {
"start": "nodemon ./src/index.js --delay 2000ms"
},
终止进程将取决于您的环境,您是否可以发布更多关于此的信息。还有,你什么时候碰到这个问题的?还有其他东西在使用这个端口,你知道它是什么吗?你能阻止它从一开始就启动吗?我正在Ubuntu 16.04上运行最新的node和nodemon。我确切地知道是什么在使用这个端口——我刚刚杀死或崩溃的服务器。它不会消失。我现在正在工作-在过去的30分钟内,至少有40次我的应用程序退出/崩溃,当我尝试重新启动时,我出现了此错误,因此我关闭了CL上的端口,重新启动了Postman并再次启动循环。某种情况告诉我这是您的设置或其他方面的问题。当进程死亡时,它将释放端口,因此在崩溃(或简单地重新启动)后再次启动进程应该不是问题。你能告诉我们更多关于你的设置吗?也许给我们看一些代码或者你的package.json是如何设置来运行nodemon的。听起来他的进程实际上并没有消亡。它停止了,然后试图重新开始倾听是的,我知道如何终止这个过程。这不是问题所在。是的,如果我的车不能启动,我知道如何用锤子敲击喷油器。我正在寻找一个解决方案而不是锤子。你知道你的服务器中抛出了什么异常来捕获它吗?对不起,我该如何捕获它?这就是我所得到的:(见orig post)。这与我所寻找的第三种选择大致相同。不幸的是,现在还没有办法测试它。如果它开始这样做,我会把它扔进去试试。
"scripts": {
"start": "nodemon ./src/index.js --delay 2000ms"
},