【问题标题】:Can't find port 3000 after killing process杀死进程后找不到端口3000
【发布时间】:2016-05-20 05:19:46
【问题描述】:

发生的事情是,我在摆弄节点,但是当我用 ctrl+c 杀死节点并再次启动它时,我得到了一个 EADDRINUSE 错误:

EADDRINUSE, Address already in use

所以我遵循了使用 PID 杀死 :3000 的建议:Kill localhost:3000 process from Windows command line

所以,现在当我运行 netstat -a -o 时,我找不到端口 3000。这是有道理的,我把它杀死了。但是我如何让它再次启动并运行,并设置为监听端口 3000?!

是的,我尝试再次启动我的服务器,但没有任何反应。字面上没有回应。它以前工作过。

版本:$节点-v v4.2.2

是的,我是一个少校的 n00b,让我们把它排除在外。谢谢。

节点 JS 代码:

'use strict' 
var port = 3000;
var express = require('express'); 
var app = express(); 
app.get('/', function(req,res){ res.send("I love treehosue"); });
app.listen(port, function(){ process.exit() console.log("server running on "+port); });

【问题讨论】:

  • 它可能处于 TIME_WAIT 状态,在您运行 netstat 时已过期。它只持续几分钟。现在只需重新启动服务器。
  • 我建议您向我们确切展示您的 netstat 向您展示的内容(将其粘贴到问题中)并向我们展示初始化您的服务器以在特定端口上运行的代码(也将其粘贴到问题中)。另一个不是你想的那样。
  • @HenricHankyGustafsson 不要在 cmets 中发布代码。您可以亲眼看到结果完全难以辨认。将其编辑到您的问题中。
  • 好的 :) 已编辑,请参阅上面的帖子 ^

标签: node.js networking localhost port


【解决方案1】:

我遇到了同样的问题。我解决这个问题的方法是简单地擦除所有内容并重新开始。但是我没有运行 (npm init --yes),而是只运行了 npm init 并手动填充了 repo 等空白字段。希望这对每个人都有帮助,即使这个问题是在 2016 年发布的。

【讨论】:

    【解决方案2】:

    您为终止进程所采取的步骤是正确的。

    您遇到的问题很可能来自意外终止应用程序。套接字缺少正确的关闭操作,操作系统在一定的超时时间内阻塞了端口。

    根据个人经验,在 linux 系统上,这可能需要 30 秒左右。

    【讨论】:

    • 2*MSL = 实际上是四分钟,除非有人弄乱了 MSL。
    • EJP,你指的是linux?
    • 我指的是 RFC 793。
    • 好吧,我是 Windows 用户,我已经排查了好几个小时,并重新启动了我的电脑(白痴修复了大声笑)。有什么建议吗?
    • @Hanky 我在您的问题下的第一条评论包含建议。当你尝试它时发生了什么?
    猜你喜欢
    • 1970-01-01
    • 2011-04-20
    • 2012-02-28
    • 1970-01-01
    • 1970-01-01
    • 2021-07-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多