EADDRINUSE error: How do you run nodemon with express so it does not listen to a port that is already in use?
EADDRINUSE error: How do you run nodemon with express so it does not listen to a port that is already in use?
我正在编写一个运行 express server 并同时运行 nodemon 和 ngrok 的 slack bot 教程。
我 运行 遇到的问题是:
Error: listen EADDRINUSE: address already in use :::5000
我认为发生错误是因为 nodemon re-runs 表示更新发生的时间。 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);
});
我去过几个兔子洞,包括 parent 和 child 'processes' (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
当已有服务 运行 并获取该端口时会发生这种情况。
有时当您使用 Ctrl-c
退出应用程序时,进程不会完全终止并在后台保留 运行。
您可以使用此命令检查哪个进程正在获取您的端口
netstat -tulnp | grep '<port number>'
看起来像这样^^
然后用上面命令提供的进程id杀死那个进程。
57997 in my case
您还可以使用 ps
命令检查后台是否已经有任何进程 运行。
添加类似
的内容
process.on(‘SIGINT’, () => { console.log(“exiting…“); process.exit(); });
process.on(‘exit’, () => { console.log(“exiting…“); process.exit(); });
在您的主 js 文件中应该捕捉到这些情况并允许您确保进程正确退出。您也可以扩展以调用一个函数来进行额外清理
我正在编写一个运行 express server 并同时运行 nodemon 和 ngrok 的 slack bot 教程。
我 运行 遇到的问题是:
Error: listen EADDRINUSE: address already in use :::5000
我认为发生错误是因为 nodemon re-runs 表示更新发生的时间。 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);
});
我去过几个兔子洞,包括 parent 和 child 'processes' (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
当已有服务 运行 并获取该端口时会发生这种情况。
有时当您使用 Ctrl-c
退出应用程序时,进程不会完全终止并在后台保留 运行。
您可以使用此命令检查哪个进程正在获取您的端口
netstat -tulnp | grep '<port number>'
看起来像这样^^
然后用上面命令提供的进程id杀死那个进程。
57997 in my case
您还可以使用 ps
命令检查后台是否已经有任何进程 运行。
添加类似
的内容process.on(‘SIGINT’, () => { console.log(“exiting…“); process.exit(); });
process.on(‘exit’, () => { console.log(“exiting…“); process.exit(); });
在您的主 js 文件中应该捕捉到这些情况并允许您确保进程正确退出。您也可以扩展以调用一个函数来进行额外清理