当我在 react app 上执行 npm start 时,不断收到“?端口 3000 上已经有东西在运行”

Posted

技术标签:

【中文标题】当我在 react app 上执行 npm start 时,不断收到“?端口 3000 上已经有东西在运行”【英文标题】:keep getting "? Something is already running on port 3000" when I do npm start on react app 【发布时间】:2018-08-07 22:18:56 【问题描述】:

当我的端口 3000 上绝对没有运行任何东西时,当我启动我的反应服务器时,我的终端中不断收到“?端口 3000 上已经有东西运行”消息

我试图解决的问题:

    重启 macOS。 在 chrome 浏览器上检查我的“http://localhost:3000”。 (无:无法访问此站点) 转到 chrome://serviceworker-internals 和 chrome://appcache-internals,搜索 localhost:3000(未找到) 我还尝试了在 Google 上找到的几乎所有关于此问题的命令行 我还创建了另一个 express.js 应用程序,它在 3000 端口上成功启动,而 React 说有东西在 3000 上运行。React 在我的计算机上一直认为有东西在端口 3000 上运行。

【问题讨论】:

run netstat -anp tcp | grep 3000 如果你有结果,那么你有一些进程在那个端口运行 @deepakthomas 我运行了你给我的代码,没有任何弹出。终端直接返回。 为什么不直接更改运行 react-app 的端口? @UtkarshPramodGupta 并没有真正解决问题,只是避免它。 【参考方案1】:

如果有人遇到此问题并且上述解决方案没有帮助,请确保您的 /etc/hosts 有:

127.0.0.1 localhost

由于某种原因,这已从我的 hosts 文件中删除,CRA 检查端口 (detect-port-alt) 的依赖项检查 localhost:[PORT] 以查看它是否可用。如果它出错,在检查特定端口时总是会收到“Something is already running...”错误,但在使用随机端口时不会出现错误(因为它是由依赖项选择的)。

【讨论】:

【参考方案2】:

当任务在端口上运行时正确终止它时会发生错误。 两个端口都可能发生此错误。你的反应应用和你的节点服务器。

要解决这个问题,您可以运行以下命令。

netstat -anp tcp | grep 3000

终端中的此命令将为您提供端口 3000 上的活动列表

npx kill-port 3000

此命令将杀死端口 3000 上所有正在运行的服务器。

现在,如果您的 Node 服务器也有同样的问题。您可以按照相同的步骤操作。

netstat -anp tcp | grep 5000

然后

npx kill-port 5000

您不需要第一个命令。只是列出端口上正在运行的活动。

只需将端口号更改为任何其他端口号。

This is the output you get after running the commands. I am using Git bash on windows.

【讨论】:

【参考方案3】:

简单易行的解决方案

关闭当前终端并打开一个新终端。

如果您在 VS Code 中运行它,只需创建一个新终端并删除旧终端。

【讨论】:

嗨@waqasali,这不能回答问题。 您的答案可以通过额外的支持信息得到改进。请edit 添加更多详细信息,例如引用或文档,以便其他人可以确认您的答案是正确的。你可以找到更多关于如何写好答案的信息in the help center。【参考方案4】:

window 在 package.json 中使用这个 "start": "set PORT=3006 && react-scripts start"

适用于 Linux 和 MacOS "start": "PORT=3006 react-scripts start"

【讨论】:

【参考方案5】:

我在 Mac 上遇到了这个问题,我通过运行解决了:

npx kill-port 3000

【讨论】:

【参考方案6】:

如果你在linux上你可以试试

pkill -f node

终止进程

【讨论】:

【参考方案7】:

首先您在 localhost:3000 上看不到任何内容,是因为该端口上必须运行适当的 web 应用程序或网站/服务器,但 port:3000 当前正在运行某个进程,而不是服务器/站点/应用程序。

顺便说一句,根据您的操作系统类型,很容易检查 port:3000 上是否存在事实上的进程。对于 MacOS,打开 终端 并运行 sudo lsof -i ':3000' 将列出端口 3000 上的当前进程。 请注意,我们需要以 sudo 或 root 身份运行命令

一旦您看到正在运行的进程,请记下 PID 并运行 kill -9 PID,这应该会终止带有 PID 的进程(即 port:3000 上的破坏性进程)。现在执行npm start 应该可以在 localhost:3000

上构建、编译和提供您的应用程序

可能发生的大多数情况是您正在运行 npm start,您要么中断了它,要么在前台关闭了它。在您的终端中执行fg 将打开所有后台任务,因此如果这会打开npm start 实例,则此过程会停止您的流程。然后,您可以正确结束会话,确保 port:3000 上的所有进程都被杀死。

快乐编码

【讨论】:

【参考方案8】:

如果你是windows用户可以试试

npx kill-port 3000

在您的控制台中。我遇到了同样的问题,它对我有用。

不确定 MAC。

【讨论】:

【参考方案9】:

日期:2020 年 10 月 7 日星期六 Windows:Microsoft Windows 10 Pro Build 19041 节点:12.16.1 NPM:6.14.8

在我的 Windows 机器上发生了类似的事情。在 *** 和其他地方尝试了很多这里建议的东西。

就我而言,我关注的是 video course,它建议在创建新的 React 应用程序时添加 --script-version 1.1.5(如下图所示)。 create-react-app app-name --scripts-version 1.1.5

这是 package.json 脚本版本:React:17.0.1 React DOM:17.0.1 React 脚本:1.1.5

在运行命令npm start 并输入y 以尝试使用不同的端口后,终端将一直卡住,直到被取消。

然后我创建了一个没有 --scripts-version 1.1.5 的新 React 应用程序,尝试运行它后,它仍然运行到 Something is already running on port 3000,但在输入 y 后,该应用程序将在不同的端口上正常运行。

这是 package.json 脚本版本(成功运行时):React:17.0.1 React-Dom:17.0.1 React 脚本:4.0.0

【讨论】:

更改端口本身并不能真正解决问题...这是由“可能”未使用的进程引起的,无论如何都需要终止。更改端口会使应用在不同的端口上运行,但默认的 3000 端口仍然会卡住。【参考方案10】:

这很简单。您可以通过 2 个简单的步骤来修复它。

    如果有名为“PORT”的键/条目,请检查您的环境变量。 如果发现删除该条目或将其重命名为其他名称。

事实证明,其他一些程序正在使用该变量。通常,当您启动 react-scripts 时,它会查找标题为 PORT 的环境变量。

【讨论】:

【参考方案11】:

从任务管理器中杀死 Node.Js 进程。

第 1 步:点击 ctrl+shift+delete 打开任务管理器

第 2 步:打开“进程”选项卡

第 3 步:搜索 Node.JS 进程并右键单击该进程,然后单击结束任务

第 4 步:现在您可以重新开始了。

【讨论】:

【参考方案12】:

我已经坚持了几个小时,最后我找到了解决方案 hosts 文件中到本地主机的映射不正确,并且与所采用的端口没有任何关系

10.2.224.130    localhost 

把它改回

127.0.0.1        localhost 

主机文件位置 https://www.howtogeek.com/howto/27350/beginner-geek-how-to-edit-your-hosts-file/

【讨论】:

这几乎是我的解决方案。出于某种原因,我刚刚评论了那条线。添加回来解决了这个问题。快要疯了【参考方案13】:

 

React 上 - 您可以通过

运行已创建的 React 单页应用程序 (SPA)

npm start 命令。

这可能会启动您的本地托管开发服务器并在以下位置运行您的应用:

http://localhost:3000/相当于:127.0.0.1:3000地址

127.0.0.1是默认的本地主机IP号,而默认的端口号由

create-react-app 包为 3000。

当得到:“Something is already running on port 3000”失败错误消息时,您可能认为该端口被您机器上运行的另一个进程捕获,但您会发现它被永久捕获为如果它在 0.0.0.0:3000 地址上运行

解决方案:

create-react-app 脚本创建的项目库中导航到:

node_modules/react-scripts/scripts/start.js

运行时 npm start 命令 - start.js 脚本被调用并执行

start.js 文件在你的编辑器中找到上面的行:

const HOST = process.env.HOST || '0.0.0.0';

并将其更改为:

const HOST = process.env.HOST || '127.0.0.1';

 

保存并再次运行您的网络应用:http://localhost:3000/ 或 http://127.0.0.1:3000

 

 

 

【讨论】:

在 node_modules 中编辑东西从来都不是一个好的解决方案——它是 .gitignored 所以它不会被持久化【参考方案14】:

正如@khurram khan 建议的那样,终止进程可能是您的最佳选择,这对我来说在 linux 上工作:

$ lsof -i tcp:3000
$ kill -9 PID

第一个命令应该为您提供 PID 编号,以便在第二个命令中作为 PID 输入。

【讨论】:

【参考方案15】:

从后台进程中杀死 node.js。这将解决问题。或者,您可以重新启动系统

【讨论】:

【参考方案16】:

打开cmd写这个

netstat -a -o -n

您将获得活动连接列表,然后点击

找到 3000

Ctrl + f

复制该端口的PID并点击此命令

taskkill /F /PID PID_of_port

编辑 本指南适用于 Windows。

【讨论】:

我是 Mac 用户。 我这样做了,但没有进程使用端口 3000。但是我仍然收到错误

以上是关于当我在 react app 上执行 npm start 时,不断收到“?端口 3000 上已经有东西在运行”的主要内容,如果未能解决你的问题,请参考以下文章

NPM 过时的命令未显示完整列表

npx create-react-app 在 big sur 上执行 yarnpkg 时失败

Docker React App:404s 将回退到 /

当我在 docker 上执行 npm install 时出现问题

使用 npx install react-create-app 时将 yarn 更改为 npm

初始 React npm start 构建失败