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

时间:2015-01-28 04:46:30

标签: node.js express socket.io

我一直在关注如何使用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);

感谢。

8 个答案:

答案 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作为节点参数。有关详细信息,请参见屏幕截图中的下方箭头。

enter image description here

答案 3 :(得分:2)

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

  1. 编辑文件" yourap / bin / www"
  2. 找到这一行:

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

  3. 将其替换为:

    var port = normalizePort(' XXXX');

  4. 其中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');
});