node.js表示正在使用的socket.io端口3000

node.js express socket.io port 3000 in use

我一直在关注如何使用socket.io创建一个简单的聊天应用程序的这个(http://socket.io/get-started/chat/)教程。

我尝试使用Express创建它,我想知道为什么端口3000已经在使用? 除非我更改端口号,否则以下代码将无效。

1
2
3
4
/* Make the http server listen on port 3000. */
http.listen(3000, function(){
 console.log('listening on *:3000');
});

表达使用端口做路由等其他事情吗?
有没有一种简单的方法可以找到该端口上发生的情况?

我可能也会对我需要的东西做些蠢事:

1
2
3
4
5
var express = require('express');
var app = require('express')();
var http = require('http').Server(app);
var router = express.Router();
var io = require('socket.io')(http);

谢谢。


我也遇到了这个问题,我解决了这个问题:

不要使用npm start来启动您的Web应用程序

请改用node app.js


试试跑步:

1
netstat -anp tcp | grep 3000

这应该显示使用端口3000的进程的名称。这是StackOverflow上的另一个问题,它更深入地介绍了这个问题。


在开发过程中执行此操作的最佳方法之一是通过IDE,您可以在其中进行全面调试并逐步完成代码。

如果您使用的是WebStorm,则可以使用。
从运行配置 - >编辑配置 - > Nods.js并添加app.js作为节点参数。有关详细信息,请参见屏幕截图中的下方箭头。

enter image description here


与上面的答案类似,不使用npm start

我正在使用nodemon和expressjs和expressjs生成器。我使用nodemon执行npm start,而npm start自己执行node ./NodeApp/bin/www

所以我编辑使nodemon自己执行node ./NodeApp/bin/www并且该错误消失了。

结论

之前

的package.json

1
2
3
4
5
6
"scripts": {
   "test":"echo "Error: no test specified" && exit 1",
   "start":"node ./NodeApp/bin/www",
   "build":"webpack --watch",
   "dev":"nodemon --exec npm start"
},

1
2
3
4
5
"scripts": {
   "test":"echo "Error: no test specified" && exit 1",
   "build":"webpack --watch",
   "dev":"nodemon --exec node ./NodeApp/bin/www"
},

所以现在我用npm run dev运行我的服务器,没有更多的错误。


我曾经(忘记我曾经)安装了ntop,默认情况下也使用了端口3000,因此得到了与此处描述的相同的错误。

正如其他人所提到的,使用netstat或lsof来查找有问题的服务(并在命令前加上sudo,以获取正确的进程名称):

1
sudo lsof -P | grep ':3000'

- 要么 -

1
sudo netstat -anp tcp | grep 3000

在Ubuntu上,服务被禁用(简单):

1
service ntop stop

我用快递应用程序解决了同样的问题:

  • 编辑文件"yourap / bin / www"
  • 找到这条线:

    var port = normalizePort(process.env.PORT ||'3000');

  • 替换为:

    var port = normalizePort('XXXX');

  • 其中XXXX是您要使用的端口号

    然后你就可以自由地开始吧!的xD


    我解决了这个问题:

    npm install shelljs

    并在启动侦听端口之前为kill nodejs进程添加代码

    1
    2
    3
    4
    5
    6
    7
    8
    var shell = require('shelljs');
    shell.exec("pkill nodejs");
    shell.exec("pkill node");

    /* Make the http server listen on port 3000. */
    http.listen(3000, function(){
     console.log('listening on *:3000');
    });

    对我来说有助于使用3000 || 3333,它解决了这个问题