Express / HTTP为每个端口监听EADDRINUSE?

时间:2017-05-18 03:55:19

标签: node.js linux express socket.io centos7

这很奇怪我在CentOS 7服务器上尝试了至少30个用于快速应用程序的端口,我不断获取:

Uncaught Exception:  listen EADDRINUSE :::1238
[ERROR] Stack Trace:  Error: listen EADDRINUSE :::1238
    at Object.exports._errnoException (util.js:1026:11)
    at exports._exceptionWithHostPort (util.js:1049:20)
    at Server._listen2 (net.js:1253:14)

我尝试了各种不同的端口,我很确定没有使用这些端口,但我不断收到此错误。

这是我的快递代码:

import http from 'http';
import express from "express";
import compression from 'compression';
import SocketIO from "socket.io";

let App = express();
let HTTPServer = http.Server(App);
let Socket = new SocketIO(HTTPServer);
App.use(compression({}));
HTTPServer.listen(1238, function() {
    console.log("Listening.."); 
});

我检查防火墙是关闭的,没有什么应该阻止应用程序。我在端口8080上还有一个应用程序runnig就好了。我只是不能让这个工作。有什么想法吗?

1 个答案:

答案 0 :(得分:2)

当您在这些端口停止程序时,也许您的进程不会停止。 尝试在终端中运行这些命令。

lsof -i:<your port number>

如果你有一张表,那就意味着你的进程没有被杀死,从那个表中复制那个PID并运行这个命令

kill -9 <PID>

这将终止在该端口上运行的进程,之后,您可以将此端口用于您的程序。

我在ubuntu中测试过这些命令,我​​不知道CentOS,但两者都是Linux,所以你可以试试这个。