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
我用一个快速的应用程序解决了同样的问题:
- 编辑文件“yourap / bin / www”
-
find该行:
var port = normalizePort(process.env.PORT ||'3000');
-
将其replace为:
var port = normalizePort('XXXX');
其中XXXX是您要使用的端口号
然后你可以自由地做npm开始 ! 的xD