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

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

我试图使用Express来创build它,我想知道为什么端口3000已经被使用了? 下面的代码将不会工作,除非我更改端口号。

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

快递是否使用端口做其他事情,如路由或其他东西? 有没有一个简单的方法来查找该端口上发生了什么?

我也可能会做一些狡猾的事情:

 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

尝试运行:

 netstat -anp tcp | grep 3000 

这应该显示您正在使用端口3000进程的名称。这是StackOverflow上的另一个问题,更深入地涉及此问题。

开发过程中最好的方法之一是通过IDE进行全面的debugging,并逐步完成代码。

如果你正在使用WebStorm,这是有效的。 从运行configuration – >编辑configuration – > Nods.js并添加app.js作为节点参数。 有关更多详细信息,请参阅截图中的下面的箭头。

在这里输入图像描述

我曾经(忘了我有)以前安装ntop ,默认情况下也使用端口3000,并因此得到相同的错误,如这里所述。

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

 sudo lsof -P | grep ':3000' 

– 要么 –

 sudo netstat -anp tcp | grep 3000 

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

 service ntop stop 

我用一个快速的应用程序解决了同样的问题:

  1. 编辑文件“yourap / bin / www”
  2. find该行:

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

  3. 将其replace为:

    var port = normalizePort('XXXX');

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

然后你可以自由地做npm开始 ! 的xD