EADDRINUSE:地址已在使用中::5000 仅在我的计算机中

EADDRINUSE: address already in use :::5000 only in my computer

所以正如我在标题中所写的那样,我知道我的 5000 端口正在使用中,尽管它没有被使用,我在 Mac OS 上,我试图关闭该端口通常会。

npx kill-port 5000

也更改了我的节点应用程序中的端口,但它是一样的,我也试过了

sudo lsof -i :5000

sudo killall -9 node

似乎没有任何效果,对我来说最奇怪的部分是它在另一台计算机上确实运行良好,windows OS 如果重要的话。

这是完整的错误消息,您可以看到反应成功运行,但节点声称该端口正在使用中。

[0] events.js:292
[0]       throw er; // Unhandled 'error' event
[0]       ^
[0] 
[0] Error: listen EADDRINUSE: address already in use :::5000
[0]     at Server.setupListenHandle [as _listen2] (net.js:1318:16)
[0]     at listenInCluster (net.js:1366:12)
[0]     at Server.listen (net.js:1452:7)
[0]     at Function.listen (/Users/hamudi/Documents/Learning/Mini Projects/devMeet/node_modules/express/lib/application.js:618:24)
[0]     at Object.<anonymous> (/Users/hamudi/Documents/Learning/Mini Projects/devMeet/server.js:45:5)
[0]     at Module._compile (internal/modules/cjs/loader.js:1063:30)
[0]     at Object.Module._extensions..js (internal/modules/cjs/loader.js:1092:10)
[0]     at Module.load (internal/modules/cjs/loader.js:928:32)
[0]     at Function.Module._load (internal/modules/cjs/loader.js:769:14)
[0]     at Function.executeUserEntryPoint [as runMain] (internal/modules/run_main.js:72:12)
[0]     at internal/main/run_main_module.js:17:47
[0] Emitted 'error' event on Server instance at:
[0]     at emitErrorNT (net.js:1345:8)
[0]     at processTicksAndRejections (internal/process/task_queues.js:80:21) {
[0]   code: 'EADDRINUSE',
[0]   errno: -48,
[0]   syscall: 'listen',
[0]   address: '::',
[0]   port: 5000
[0] }
[0] [nodemon] app crashed - waiting for file changes before starting...
[1] ℹ 「wds」: Project is running at http://10.0.0.5/
[1] ℹ 「wds」: webpack output is served from 
[1] ℹ 「wds」: Content not from webpack is served from /Users/hamudi/Documents/Learning/Mini Projects/devMeet/client/public
[1] ℹ 「wds」: 404s will fallback to /
[1] Starting the development server...

提前致谢。

如果您使用的是 *nix,您可以使用 netstat -ap | grep <portnumber> 查看特别是 什么正在使用该进程;它可能是另一个 resource/service 例如 Docker.

值得注意的是,netstat 也适用于 Powershell(在 Win 11 中测试),但没有对 grep 的原生支持,因此您可能只需要查看列表即可。

我的天啊,几天后我终于解决了这个问题。 所以让我们简单点: 如果您是 Mac 用户并且最近将您的 OS 更新为 Monterey 那么您应该知道 apple 正在使用此端口作为 airplay 接收器

there’s a new setting under System Preferences -> Sharing called Airplay Receiver.

关闭它。

现在你当然可以更改端口,我不建议将其关闭,但只是为了让你可以检查并了解导致问题的原因,当你关闭它时它会起作用(在至少它对我有用)然后你可以把它重新打开并在 node.js

中更改你的端口

“完成后,您应该会发现端口 5000 立即释放出来。Apple 会选择如此常用的端口,这很奇怪,尤其是对于开发人员而言!”

我在这里找到了这个: https://utf9k.net/questions/macos-port-5000-monterey/