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); |
谢谢。
我也遇到了这个问题,我解决了这个问题:
不要使用
请改用
试试跑步:
1 | netstat -anp tcp | grep 3000 |
这应该显示使用端口3000的进程的名称。这是StackOverflow上的另一个问题,它更深入地介绍了这个问题。
在开发过程中执行此操作的最佳方法之一是通过IDE,您可以在其中进行全面调试并逐步完成代码。
如果您使用的是WebStorm,则可以使用。
从运行配置 - >编辑配置 - > Nods.js并添加
与上面的答案类似,不使用
我正在使用nodemon和expressjs和expressjs生成器。我使用nodemon执行
所以我编辑使nodemon自己执行
结论
之前
的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" }, |
所以现在我用
我曾经(忘记我曾经)安装了ntop,默认情况下也使用了端口3000,因此得到了与此处描述的相同的错误。
正如其他人所提到的,使用netstat或lsof来查找有问题的服务(并在命令前加上sudo,以获取正确的进程名称):
1 | sudo lsof -P | grep ':3000' |
- 要么 -
1 | sudo netstat -anp tcp | grep 3000 |
在Ubuntu上,服务被禁用(简单):
1 | service ntop stop |
我用快递应用程序解决了同样的问题:
找到这条线:
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'); }); |
对我来说有助于使用