错误:侦听EADDRINUSE:地址已在使用::3000-数字海洋



我最近关注了一个视频聊天教程,想在Digitalocean上托管它来测试一些webRTC的东西。我让它发挥了作用,甚至在Heroku上主持了它。然而,当我把它托管在一个未使用的液滴上(用完了最初100美元的免费数字海洋信用(,并将SSH放入我的液滴&运行npm start(是的,尽管它不在教程github代码中,但npm startpackage.json(,我得到一个错误。

USER***@nodejs-s-1vcpu-1gb-sfo2-01:~/DIRNAME$ sudo npm start
> livestream-server@0.0.1 start /home/USER***/DIRNAME
> node app.js
events.js:292
throw er; // Unhandled 'error' event
^
Error: listen EADDRINUSE: address already in use :::3000
at Server.setupListenHandle [as _listen2] (net.js:1313:16)
at listenInCluster (net.js:1361:12)
at Server.listen (net.js:1447:7)
at Object.<anonymous> (/home/USER***/ZMP_Solutions/app.js:17:8)
at Module._compile (internal/modules/cjs/loader.js:1137:30)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:1157:10)
at Module.load (internal/modules/cjs/loader.js:985:32)
at Function.Module._load (internal/modules/cjs/loader.js:878:14)
at Function.executeUserEntryPoint [as runMain] (internal/modules/run_main.js:71:12)
at internal/main/run_main_module.js:17:47
Emitted 'error' event on Server instance at:
at emitErrorNT (net.js:1340:8)
at processTicksAndRejections (internal/process/task_queues.js:84:21) {
code: 'EADDRINUSE',
errno: 'EADDRINUSE',
syscall: 'listen',
address: '::',
port: 3000
}
npm ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR! livestream-server@0.0.1 start: `node app.js`
npm ERR! Exit status 1
npm ERR!
npm ERR! Failed at the livestream-server@0.0.1 start script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.

我已经阅读了这个相关的问题,并尝试了很多方法,例如在运行npm start时使用sudo,或者将端口设置为高于3000,但都没有帮助。有解决办法吗?

谢谢!

这意味着您的应用程序已经在使用端口3000。也许是同一服务器的实例。

您可以按如下方式关闭其他进程:

sudo netstat -lntp | grep 3000

以找到使用端口3000的进程。获取该进程的PID(进程ID(。PID是像输出中的234/node一样写入PID/ProcessName的数字,其中234是PID。在以下命令中使用它:

sudo kill -9 PID

填写您找到的PID。

现在你可以正常运行你的服务器,你不会再出现那个错误了。

不要设置端口或更高版本。因为heroku或数字海洋将动态分配端口(任何可用的端口(

const server = require('http').createServer();
const port = process.env.PORT || 3000;
server.listen(port, () => console.log(`Listening on ${port}`));

这个问题实际上与Digitalocean上的防火墙有关。我所做的只是运行sudo ufw disable,它成功了!!

相关内容

最新更新