![](/img/trans.png)
[英]Why do I keep getting this error when running npm run start? It's an import error on React
[英]keep getting "? Something is already running on port 3000" when I do npm start on react app
當我啟動我的反應服務器時,當我的端口 3000 上絕對沒有運行時,我不斷收到“?端口 3000 上已經有東西在運行”消息
我試圖解決的問題:
如果您是 Windows 用戶,您可以嘗試使用
npx kill-port 3000
在您的控制台中。 我遇到了同樣的問題,它對我有用。
不確定MAC。
從任務管理器中殺死Node.Js
進程。
步驟 1:通過單擊 ctrl+shift+delete 打開任務管理器
第 2 步:打開進程選項卡
第 3 步:搜索 Node.JS 進程並右鍵單擊該進程,然后單擊結束任務
第4步:現在你可以重新開始了。
正如@khurram khan 建議的那樣,終止進程可能是您的最佳選擇,這對我來說在 linux 上工作:
$ lsof -i tcp:3000
$ kill -9 PID
第一個命令應該為您提供 PID 編號,以便在第二個命令中作為 PID 輸入。
我在 Mac 上遇到了這個問題,我通過運行解決了:
npx kill-port 3000
我已經堅持了幾個小時,最后我找到了解決方案 在 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/
從后台進程中殺死 node.js。 這將解決問題。 或者,您可以重新啟動系統
對於窗口在 package.json "start" 中使用它:"set PORT=3006 && react-scripts start"
對於 Linux 和 MacOS "start": "PORT=3006 react-scripts start"
如果有人遇到此問題並且上述解決方案沒有幫助,請確保您的/etc/hosts
具有:
127.0.0.1 localhost
出於某種原因,這已從我的主機文件中刪除,並且 CRA 用於檢查端口 ( detect-port-alt
) 的依賴項會檢查localhost:[PORT]
以查看它是否可用。 如果它出錯,在檢查特定端口時總是會出現“Something is already running...”錯誤,但在使用隨機端口時不會出現錯誤(因為它是由依賴項選擇的)。
這很簡單。 您可以通過 2 個簡單的步驟來修復它。
事實證明,其他一些程序正在使用該變量。 通常,當您啟動 react-scripts 時,它會查找具有該標題 PORT 的環境變量。
日期:2020 年 10 月 07 日星期六
視窗:微軟視窗 10 專業版 19041
節點:12.16.1
NPM :6.14.8
我的 Windows 機器上發生了類似的事情。 在 StackOverflow 和其他地方嘗試了很多這里建議的東西。
就我而言,我正在關注一個視頻課程,該課程建議在創建新的 React 應用程序時添加--script-version 1.1.5
(如下圖所示)。
create-react-app app-name --scripts-version 1.1.5
這是package.json
腳本版本:
反應:17.0.1
反應 DOM :17.0.1
反應腳本:1.1.5
在運行命令npm start
並輸入y
以嘗試使用不同的端口后,終端將一直卡住,直到它被取消。
然后我創建了一個沒有--scripts-version 1.1.5
的新 React 應用程序,在嘗試運行它之后,它仍然運行到Something is already running on port 3000
但是在輸入y
之后,該應用程序將在不同的地方運行沒有問題港口。
這是package.json
腳本版本(成功運行時):
反應:17.0.1
反應DOM :17.0.1
反應腳本:4.0.0
從您在localhost:3000上看不到任何內容的原因開始,是因為該端口上必須運行適當的 webapp 或網站/服務器,但port:3000當前正在運行某個進程,而不是服務器/站點/應用程序。
順便說一句,根據您的操作系統類型,很容易檢查端口:3000上是否實際上存在進程。 對於 MacOS,打開終端並運行sudo lsof -i ':3000'
將列出端口 3000 上的當前進程。請注意,我們需要以 sudo 或 root 身份運行命令
一旦您看到正在運行的進程,請記下 PID 並運行kill -9 {PID}
,這應該會終止帶有 PID 的進程(即端口:3000上的破壞性進程)。 現在執行npm start
應該可以在localhost:3000上構建、編譯和提供您的應用程序
大多數情況下可能發生的是你有一個npm start
運行,你要么中斷,要么在前台關閉。 在您的終端中執行fg
將打開任何后台任務,因此如果這會打開一個npm start
實例,則該進程會停止您的流程。 然后,您可以正確結束會話,確保端口:3000上的所有進程都被殺死。
快樂編碼
如果你在linux上,你可以試試
pkill -f node
終止進程
當任務在端口上運行時正確終止它時會發生錯誤。 兩個端口都可能發生此錯誤。 你的反應應用和你的節點服務器。
要解決此問題,您可以運行以下命令。
netstat -anp tcp | grep 3000
終端中的此命令將為您提供端口 3000 上的活動列表
npx kill-port 3000
此命令將殺死端口 3000 上所有正在運行的服務器。
現在,如果您的 Node 服務器也有同樣的問題。 您可以按照相同的步驟進行操作。
netstat -anp tcp | grep 5000
然后
npx kill-port 5000
您不需要第一個命令。 它只是列出端口上正在運行的活動。
只需更改任何其他端口號的端口號。
對我來說,這每次都有效(macOS): sudo kill -9 $(sudo lsof -t -i:3000)
簡單易行的解決方案
關閉當前終端並打開一個新終端。
如果您在 VS Code 中運行它,只需創建一個新終端並刪除舊終端。
在React上 - 您可以通過以下方式運行已創建的 React 單頁應用程序 (SPA)
npm 啟動命令。
這可能會啟動您的本地托管開發服務器並在以下位置運行您的應用程序:
http://localhost:3000/相當於: 127.0.0.1 :3000 地址
127.0.0.1是默認的 localhost 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保存並再次運行您的 Web 應用程序
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.