我一直在关注如何使用socket.io创建一个简单的聊天应用程序的这个(http://socket.io/get-started/chat/)教程。
我尝试使用Express创建它,我想知道为什么端口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);
感谢。
答案 0 :(得分:25)
我也遇到了这个问题,我解决了这个问题:
请勿使用npm start
启动您的网络应用
使用node app.js
代替
答案 1 :(得分:12)
尝试跑步:
netstat -anp tcp | grep 3000
这应该显示正在使用端口3000的进程的名称。这里有关于StackOverflow的another issue更深入地解决了这个问题。
答案 2 :(得分:4)
在开发过程中执行此操作的最佳方法之一是通过IDE,您可以在其中进行全面调试并逐步完成代码。
如果您使用的是WebStorm,则可以使用。
从运行配置 - >编辑配置 - > Nods.js并添加app.js
作为节点参数。有关详细信息,请参见屏幕截图中的下方箭头。
答案 3 :(得分:2)
我使用快速应用程序解决了同样的问题:
找到这一行:
var port = normalizePort(process.env.PORT ||' 3000');
将其替换为:
var port = normalizePort(' XXXX');
其中XXXX是您要使用的端口号
然后你可以自由地开始 npm start !的xD
答案 4 :(得分:2)
我曾经(忘记我曾经)安装了ntop,默认情况下也使用了端口3000,因此得到了与此处所述相同的错误。
正如其他人所提到的,使用netstat或lsof查找违规服务(并在命令前加上sudo,以获取正确的进程名称):
sudo lsof -P | grep ':3000'
- 或 -
sudo netstat -anp tcp | grep 3000
在Ubuntu上,服务被禁用(简单地):
service ntop stop
答案 5 :(得分:2)
与上述答案类似,不使用npm start
。
我正在使用nodemon和expressjs和expressjs生成器。我使用nodemon来执行npm start
,而npm start自己执行node ./NodeApp/bin/www
所以我编辑了使nodemon自己执行node ./NodeApp/bin/www
并且该错误消失了。
结论
<强>之前强>
的package.json
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1",
"start": "node ./NodeApp/bin/www",
"build": "webpack --watch",
"dev": "nodemon --exec npm start"
},
<强>后强>
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1",
"build": "webpack --watch",
"dev": "nodemon --exec node ./NodeApp/bin/www"
},
所以现在我用npm run dev
运行我的服务器,不再有错误。
答案 6 :(得分:0)
对我来说,有助于使用3000 || 3333
,并且可以解决问题
答案 7 :(得分:0)
我通过以下方法解决了这个问题:
npm安装shelljs
并在启动侦听端口之前添加代码以杀死nodejs进程
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');
});