当我在 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 上运行。
【问题讨论】:
runnetstat -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
您将获得活动连接列表,然后点击
找到 3000Ctrl + f
复制该端口的PID并点击此命令
taskkill /F /PID PID_of_port
编辑 本指南适用于 Windows。
【讨论】:
我是 Mac 用户。 我这样做了,但没有进程使用端口 3000。但是我仍然收到错误以上是关于当我在 react app 上执行 npm start 时,不断收到“?端口 3000 上已经有东西在运行”的主要内容,如果未能解决你的问题,请参考以下文章
npx create-react-app 在 big sur 上执行 yarnpkg 时失败
当我在 docker 上执行 npm install 时出现问题