EADDRINUSE错误:如何使用express运行nodemon,以使其不侦听已在使用的端口?

问题描述 投票:0回答:1

我正在研究一个松弛的机器人教程,该教程运行Express服务器并同时,nodemon和ngrok运行。

我遇到的问题是:

错误:监听EADDRINUSE:地址已在使用::: 5000

我认为发生错误是因为在发生更新时,nodemon重新运行表示。 index.js

const server = app.listen(process.env.PORT || 5000, () => {
  console.log('Express server listening on port %d in %s mode', server.address().port, app.settings.env);
});

[我走了几个兔子洞,其中包括父母和孩子的'过程'(https://dev.to/kyrelldixon/how-to-setup-an-express-js-server-in-node-js-56hp

和/或由于更新(https://github.com/remy/nodemon/issues/1025),这看起来像是某种错误

我什至考虑过要在.listen上添加某种回调,以便应用程序检查端口是否正在运行(http://expressjs.com/en/5x/api.html#app.listen_path_callback

但是最终,不确定如何解决这个问题。谁能提供一些指导?

我的设置:

npm -v
1.5.0
node -v
v10.16.3
nodemon -v
v2.0.2
express -v
v4.16.0
express slack-api nodemon
1个回答
0
投票

[这是在已经有服务在运行并获取该端口时发生。

有时,当您使用Ctrl-c退出应用程序时,该进程不会被完全杀死,而是继续在后台运行。

您可以使用此命令检查哪个进程正在获取您的端口

    netstat -tulnp | grep '<port number>'

enter image description here

看起来像这样^^

然后使用上述命令提供的进程ID终止该进程。

在我的情况下为57997

您还可以使用ps命令检查是否在后台运行了任何进程。

© www.soinside.com 2019 - 2024. All rights reserved.