我有一个简单的服务器运行在node.js使用连接:

var server = require('connect').createServer();
//actions...
server.listen(3000);

在我的代码中,我有实际的处理程序,但这是基本的思想。我一直遇到的问题是

EADDRINUSE, Address already in use

我收到这个错误时再次运行我的应用程序后,它以前崩溃或错误。因为我没有打开一个新的终端实例,所以我用ctr + z关闭了这个进程。

我非常确定我所要做的就是关闭服务器或连接。我尝试在进程中调用server.close()。(“退出”,…);运气不好。


当前回答

在terminal/cmd中使用下面的命令来改变端口(npm run dev是node.js的),你可能有其他命令来运行你的应用程序,其中大多数在改变端口时都可以工作,更简单,更快。此外,您可以使用系统中任何空闲的端口号,而不是3002

PORT=3002 npm run dev

大多数情况下,当一个人运行项目时突然或不知情地退出一个,按下control + z,让你退出端口,总是选择control + c,不会从端口退出来运行服务器或项目。

此外,是时候更改代码中的端口号了

server.listen(3002);

其他回答

Server.close()需要一段时间来关闭连接,因此我们应该将其作为一个异步调用:

await server.close();

重要的是: 当使用await时,我们必须在封装函数中使用async关键字:

async () => {
  await server.close();
}

Win10, git bash v2.15, node v8.9.1, npm v5.5.1

我有一个包裹。Json脚本启动节点:"start": "node index.js"

无论何时我使用它,不管我是否用ctrl+c杀死它,我都遇到了这个问题。

如果我只是从git bash运行node index.js而不是npm run start并用ctrl+c杀死,我永远不会得到这个错误。

我不知道为什么,但我想这可能会帮助到一些人。

在Windows上,我得到以下错误:

EADDRINUSE:地址已经在使用:::8081。

遵循以下步骤:

以管理员身份打开CMD 执行以下操作

命令netstat -ano|findstr "PID:8081"

得到以下流程:

通过:

Taskkill /pid 43144 /f

在MAC上你可以这样做:

raghavkhunger@MacBook-Air ~ % lsof -i tcp:8081 命令pid user fd类型设备大小/关闭节点名称 节点23722用户名24u IPv6 0xeed16d7ccfdd347 0t0 TCP *:sunproxyadmin (LISTEN)

username@MacBook-Air ~ % kill -9 23722

对于所有来到这个帖子并尝试了所有可能使用无恶魔或永远做到这一点的人。 例如,如果你跑步 端口= 6060 Nodemon 您可能会得到端口6060已被使用的相同错误。

如果是这种情况,如果你真的需要在运行过程中定义port,那么就运行你的项目而不使用nodemon。或者,如果你想坚持使用nodemon,你可以在你的文件中定义port。

对我来说,我现在这样做PORT=6060 node app.js

我也面临着同样的问题。我刚刚把我的端口号从8000改成了6000。 当你有3000的时候,你可以尝试5000、4000、7000、8000等等。