Node.js Port 3000 ถูกใช้งานแล้ว แต่จริง ๆ แล้วไม่ใช่หรือ?


133

ฉันทำงานกับโปรเจ็กต์ node.js มาสองสามสัปดาห์แล้วและมันก็ใช้งานได้ดี โดยปกติฉันใช้npm startเพื่อเรียกใช้แอปของฉันและดูในเบราว์เซอร์บน localhost พอร์ต 3000

วันนี้ฉันเริ่มได้รับข้อผิดพลาดต่อไปนี้ขณะใช้ npm start:

Server started on port 3000                                                                                                                                                                                         
Port 3000 is already in use 

ฉันได้ตรวจสอบการตรวจสอบทรัพยากรแล้วและฉันไม่มีกระบวนการอื่นใดที่ทำงานบนพอร์ต 3000 เหตุใดฉันจึงได้รับข้อความแสดงข้อผิดพลาดนี้

ใน app.js ของฉันฉันมีรหัสต่อไปนี้เพื่อตั้งค่าพอร์ต ... ไม่ถูกต้องหรือไม่? ก่อนหน้านี้ใช้งานได้ดีเลยไม่แน่ใจว่าตัวเองทำอะไรผิด

// Set Port
app.set('port', (process.env.PORT || 3000));
app.listen(app.get('port'), function() {
    console.log('Server started on port '+app.get('port'));
});

ขอบคุณสำหรับความช่วยเหลือ!


แก้ไข:

ฉันได้ลองเรียกใช้ netstat และ TCPView เพื่อตรวจสอบว่ากระบวนการใช้พอร์ตใด แต่ไม่มีอะไรใช้พอร์ตนั้น ฉันลองรีสตาร์ทแล็ปท็อปของฉันด้วย แต่ก็ยังได้รับข้อผิดพลาดเดียวกัน


มีกระบวนการอื่นที่ใช้พอร์ตนี้เป็นที่แน่นอน คุณกำลังพยายามใช้ระบบปฏิบัติการใด คุณสามารถ Google ได้เช่น 'ค้นหาว่ามืออาชีพใดใช้พอร์ต' สำหรับระบบปฏิบัติการของคุณ
tanaydin

1
คุณเคยลองstackoverflow.com/questions/48198/…
Isaac

1
ไอคอน Fav จะถูกแคช คุณยังสามารถลองnetstatใช้พรอมต์คำสั่งหรือเชื่อมต่อกับ localhost: 3000 ด้วยเทลเน็ตที่เทียบเท่า - PuTTY เป็นต้น
Blorgbeard ออก

5
ฉันสังเกตเห็นว่าคุณได้รับ "พอร์ต 3000 ถูกใช้งานแล้ว" หลังจาก "เซิร์ฟเวอร์เริ่มต้นที่พอร์ต 3000" - มีบางอย่างในแอปของคุณที่พยายามเริ่มฟังอีกครั้งบนพอร์ตเดียวกันหรือไม่
Blorgbeard ออก

7
ฉันเดาว่าคุณมีสองapp.listen()คำสั่งในแอปของคุณในอีกคำสั่งหนึ่ง.listen()ที่พยายามเริ่มเซิร์ฟเวอร์บนพอร์ตนั้นด้วย อันแรกใช้งานได้อันที่สองรายงานข้อผิดพลาด .listenค้นหารหัสของคุณสำหรับ
jfriend00

คำตอบ:


294

คุณสามารถค้นหาวิธีฆ่ากระบวนการนั้น

สำหรับLinux / Mac OS ให้ค้นหา(sudo) runสิ่งนี้ในเทอร์มินัล:

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

บน Windows:

netstat -ano | findstr :3000
tskill typeyourPIDhere 

เปลี่ยนtskillเป็นtaskkillgit bash


2
ฉันได้ลองใช้วิธีแก้ปัญหาอื่น ๆ บน windows แล้ว แต่วิธีนี้พบกระบวนการแปลก ๆ ที่ใช้พอร์ต ได้รับการโหวตเพิ่มขึ้นสำหรับการรวมแนวทาง linux นอกเหนือจากการทำงานบน windows
truedat101

2
tskill ไม่ทำงานให้ฉันบน windows taskkill / F / PID myPIDhere - งานนี้
snersesyan

2
ฉันไม่ได้อะไรเลยlsofแต่เมื่อsudo lsof ฉันได้รับบางสิ่งบางอย่างและการฆ่ากระบวนการนั้นช่วยแก้ปัญหานี้ได้
user985366

มีวิธีรับ PID แบบไดนามิกสำหรับกระบวนการทำงานและฆ่ามันหรือไม่? ด้วยเหตุผลบางประการฉันต้องทำสิ่งนี้ทุกครั้งที่ปรับใช้กับ prod ด้วยตนเอง บันทึกด้านข้างให้แน่ใจว่าเกี่ยวข้องกับ PM2 หรือไม่
S_W

1
taskkill ไม่ได้ทำงานให้ฉันใน git-bash แต่ tskill ทำ ขอบคุณ.
nickcamillo

56

บางทีคุณอาจใช้เป็นข้อมูลอ้างอิงก็ได้ บรรทัดคำสั่งเดียวนี้สามารถฆ่ากระบวนการที่ทำงานบนพอร์ตที่กำหนด

npx kill-port 3000

ป้อนคำอธิบายภาพที่นี่


เพื่อฆ่าหลายพอร์ต

npx kill-port 3000 8080 4200

2
สิ่งนี้ได้ผลอย่างมีเสน่ห์ขอบคุณ
Aditya Patnaik

1
เยี่ยมมากทำงานได้อย่างสมบูรณ์แบบ
Jeremy

1
หลังจากความล้มเหลวมากมาย ... บรรทัดคำสั่งเดียวทำงานอยู่ที่นั่น !!!
A.D'Alfonso

1
ขอบคุณที่ทำงาน !!!!
Crown Backend

38

บางครั้งมันก็เกิดขึ้นตามที่ @sova เสนอสิ่งนี้เกิดขึ้นกับฉันบางครั้ง EADDR กำลังใช้งานอยู่ โดยทั่วไปจะมีหน้าต่างเทอร์มินัลซ่อนอยู่ในพื้นหลังซึ่งยังคงเรียกใช้แอปอยู่และนั่นก็เหมาะกับฉันด้วย

มันเกิดขึ้นเมื่อคุณเปิดเทอร์มินัลเป็นเวลานานใช่คุณมีสิทธิ์คุณหยุดกระบวนการแล้ว แต่บางครั้งมันก็ไม่ได้หยุดอยู่เบื้องหลัง ทางออกที่ดีที่สุดคือคุณปิดเทอร์มินัลแล้วเริ่มใหม่อีกครั้งมันจะแก้ปัญหาของคุณ เพราะในกรณีของฉันมันใช้งานได้

นอกจากนี้

sudo lsof -i:<PORT_NO>

ปิดอินสแตนซ์สำหรับเวลาปัจจุบัน แต่ไม่สามารถหยุดกระบวนการในพื้นหลังได้ ครั้งหนึ่ง

sudo kill <PID>

ใช้งานได้ แต่อีกครั้งเมื่อเราอัปเดตโค้ดและบันทึกปัญหานี้จะเกิดขึ้นอีกครั้งเช่นเดียวกับNodemon Nodemon

ดังนั้นออกจากเทอร์มินัลจะแก้ปัญหาได้ หรือ

  killall -9 node

4
ทั้ง lsof หรือ netstat ไม่ส่งคืนอะไรเลย แต่ดูเหมือนว่ายังมีกระบวนการบางอย่างที่ใช้พอร์ต หลังจากที่killall -9 nodeฉันสามารถเรียกใช้เซิร์ฟเวอร์ภายในเครื่องได้
Julsteri

ขอบคุณสำหรับคำสั่ง killall -9 node มันใช้งานได้กับ goorm IDE
ifhy

23

ผมมีปัญหาเหมือนกัน. (ขั้นตอนด้านล่างใช้ได้ดีกับ Windows 10):

  1. เปิดตัวจัดการงาน (กดCtrl+ Alt+ Delete)
  2. เลือกแท็บ 'กระบวนการ'
  3. ค้นหา 'Node.js: Server-side JavaScript'
  4. เลือกและคลิกที่ปุ่ม 'สิ้นสุดงาน'

npm startตอนนี้คุณสามารถเรียกใช้

หวังว่าจะช่วยคุณได้


22

สำหรับ Windows ตัวจัดการงานจะแสดงกระบวนการโหนดที่กำลังทำงานอยู่ พยายามที่จะฆ่ากระบวนการมันจะแก้ปัญหา


8

ฉันเคยเห็นสิ่งเดียวกันและลองทำตามคำแนะนำทั้งหมดข้างต้นแล้วไม่ประสบความสำเร็จ นี่คือขั้นตอนที่แก้ไขสำหรับฉัน: - ปิด wifi - เริ่ม npm (ควรใช้งานได้) - เปิด wifi

ฉันไม่แน่ใจว่าปัญหารากคืออะไร แต่แก้ไขได้สำหรับฉัน


ฉันก็มีสิ่งนี้เกิดขึ้นกับฉันเช่นกัน netstat -anoไม่ได้แสดงรายการใด ๆ โดยใช้พอร์ต 3000
นาธาน

1
นรกศักดิ์สิทธิ์สิ่งนี้แก้ไขให้ฉันได้เช่นกันเนื่องจากเห็นได้ชัดว่าไม่มีอะไรทำงานบนพอร์ต 3000 ฉันเริ่มมีปัญหานี้หลังจากอัปเดต Windows ไม่เคยคิดจะปิด WiFi ขอบคุณสำหรับการแก้ปัญหานี้ :)
3Dos

8

ฆ่ากระบวนการที่เป็นเจ้าของพอร์ต 3000

ก่อนอื่นมาดูกันว่าเราจะฆ่ากระบวนการที่เปิดพอร์ตได้อย่างไร

ใช้คำสั่ง lsof เราสามารถดึง PID ที่มีพอร์ตที่กำหนด:

$ lsof -i :3000 -t
12345

จากนั้นเราสามารถฆ่ากระบวนการนี้ได้โดยทำ:

$ kill 12345

ลองเปลี่ยนเป็นซับเดียว:

lsof -i 3000 -t | xargs kill

หากคุณกำลังใช้ตัวแปรสภาพแวดล้อมเพื่อตั้งค่าพอร์ตเซิร์ฟเวอร์เราสามารถระบุสิ่งนั้นแทนการเข้ารหัสค่าของเราได้:

lsof -i ${PORT} -t | xargs kill

สุดท้ายนี้เราสามารถตั้งค่าเริ่มต้นเป็นพอร์ต 3000 ได้หากไม่ได้ตั้งค่าตัวแปรสภาพแวดล้อม:

lsof -i ${PORT:-3000} -t | xargs kill

รับ nodemon เพื่อเรียกใช้งาน hooks

Nodemon ให้คุณตั้งค่า event hooks ผ่านไฟล์คอนฟิกูเรชัน nodemon.json:

{
  "events": {
    "crash": "sh -c 'lsof -i :${PORT:-3000} -t | xargs kill'"
  }
}

สิ่งนี้จะทำให้ nodemon รัน sh -c 'lsof -i:${PORT:-3000} -t | xargs kill เมื่อใดก็ตามที่แอปของคุณขัดข้องดังนั้นการฆ่ากระบวนการย่อยที่เกิดขึ้นซึ่งทำให้พอร์ตเปิดอยู่

หรือจะลองอันนี้ก็ได้

fuser -k PORT-NO/tcp

เช่น:

fuser -k 3000/tcp

นี่เป็นวิธีแก้ปัญหาที่ดีและสะอาดในการฆ่ากระบวนการ ต้องมองหาวิธีทำทุกครั้งและนี่คือทางออกที่ดีที่สุดที่ฉันเคยเห็น!
twknab

ฉันประสบปัญหานี้แม้ว่าจะไม่มีกระบวนการใด ๆ กลับมาจากlsof -i :3000 -t= \
xaunlopez

@xaunlopez ลองอันนี้ fuser -k port-number/tcp
Afeesudheen

7

ฉันใช้เซิร์ฟเวอร์ด่วนกับnodemonบน NodeJS ฉันได้รับข้อความต่อไปนี้และดูเหมือนว่ามีข้อผิดพลาด:

$ node ./bin/www
Port 3000 is already in use

มีวิธีแก้ปัญหาทั่วไปที่หากคุณยุติการเชื่อมต่อเซิร์ฟเวอร์โหนดทั้งหมดคุณสามารถเพิ่มรหัสนี้ในไฟล์ package.json ของคุณ:

"scripts": {
    "start": "node ./bin/www",
    "stop": "taskkill -f -im node.exe"
},

นอกจากนี้ฉันพบคำสั่ง windows และ bash หลายโซลูชันบน Win 10 x64

บันทึกทั้งหมดของฉันอยู่ที่นี่:


# ยุติการเชื่อมต่อเซิร์ฟเวอร์ NodeJS ทั้งหมด

$ taskkill -f -im node.exe
SUCCESS: The process "node.exe" with PID 14380 has been terminated.
SUCCESS: The process "node.exe" with PID 18364 has been terminated.
SUCCESS: The process "node.exe" with PID 18656 has been terminated.

# ตัวอย่าง: เปิดตัวจัดการงานของ Windows และดูหมายเลข PID "node.exe" บน Windows

>> Command Line
$ netstat /?
$ netstat -a -n -o
$ netstat -ano

# ฆ่ากระบวนการใน Windows ตามหมายเลขพอร์ต (ตัวอย่าง)

สำหรับความช่วยเหลือ:

$ taskkill /?
$ tskill /?

รหัส 1:

$ taskkill -pid 14228
ERROR: The process with PID 14228 could not be terminated.
Reason: This process can only be terminated forcefully (with /F option).

รหัส 2:

$ taskkill -f -pid 14228
SUCCESS: The process with PID 14228 has been terminated.

รหัส 3:

$ tskill 14228

# บรรทัดคำสั่งสำหรับดูพอร์ตเฉพาะ

ใน cmd:

$ netstat -ano | find "14228"

ในการทุบตี:

$ netstat -ano | grep "14228" or $ netstat -ano | grep 14228

# ค้นหา node.exe โดยใช้คำสั่ง "tasklist"

ใน cmd:

$ tasklist | find "node"

ในการทุบตี:

$ tasklist | grep node
$ tasklist | grep node.exe
node.exe                     14228 Console                    2     48,156 K
node.exe                     15236 Console                    2     24,776 K
node.exe                     19364 Console                    2     24,428 K

7

ฉันยังพบปัญหาเดียวกัน วิธีที่ดีที่สุดในการแก้ไขคือ(สำหรับ Windows) :

  1. ไปที่ที่ Task Manager

  2. เลื่อนและค้นหากระบวนการงานที่ชื่อ Node.js: JavaScript ฝั่งเซิร์ฟเวอร์ เพิ่มรูปภาพสำหรับการอ้างอิง

  3. จบงานนี้โดยเฉพาะ

ไปเลย! ตอนนี้เริ่ม npmแล้วมันจะทำงานเหมือนเดิม!


6

สิ่งนี้เกิดขึ้นกับฉันบางครั้ง EADDR ใช้งานอยู่ โดยทั่วไปจะมีหน้าต่างเทอร์มินัลซ่อนอยู่ในพื้นหลังซึ่งยังคงเรียกใช้แอปอยู่ คุณสามารถหยุดกระบวนการด้วย ctrl + C ในหน้าต่างเทอร์มินัล

หรือบางทีคุณอาจฟังพอร์ตหลายครั้งเนื่องจาก copy / pasta =)


ขอบคุณสำหรับความช่วยเหลือ! ฉันไม่มีหน้าต่างเทอร์มินัลอื่น ๆ เปิดอยู่ฉันควรตรวจสอบอะไรอีกไหม
user2573690

ค้นหาโหนดหรือกระบวนการ npm และสิ้นสุด หากคุณยังคงมีอาการเหวี่ยงรีบูตเครื่องหรือเพียงแค่เลือกพอร์ตอื่นที่จะใช้งานได้ ไม่มีเหตุผลจริงๆที่จะต้องเป็นพอร์ต 3000 หรือ 8080
sova

ฉันเพิ่งสร้างแอปโหนดใหม่และเริ่มต้นที่พอร์ต 3000 และดูเหมือนว่าจะทำงานได้ดี แต่เมื่อฉันพยายามเรียกใช้โครงการที่มีอยู่มันแจ้งว่ามีการใช้งานพอร์ต คุณเคยมีปัญหานี้หรือไม่?
user2573690

@ user2573690 ฉันไม่เคยเจอมาก่อน แต่บางทีคุณอาจมีไฟล์ js หลายไฟล์ (เช่น app.js และ index.js) โดยที่ไฟล์หนึ่งกำลังโทร.listen()หลายครั้ง?
sova

2
ขอบคุณ! ฉันจัดการเพื่อคิดออกฉันกำลังฟังพอร์ตหลายครั้งอุบัติเหตุคัดลอก / พาสต้า! หากคุณสามารถแก้ไขคำตอบและเพิ่มส่วนนั้นได้ฉันจะทำเครื่องหมาย ขอขอบคุณอีกครั้ง!
user2573690

5

เปิดตัวจัดการงาน (กด Ctrl + Alt + Del เลือก 'แท็บกระบวนการ' ค้นหา 'Node.js: JavaScript ฝั่งเซิร์ฟเวอร์' เลือกและคลิกที่ปุ่ม 'สิ้นสุดงาน'


3

ฉันใช้เวลา 2 ชั่วโมงในการค้นหาว่าเหตุใดจึงEADDRINUSEไม่อนุญาตให้ฉันเปิดแอป (เซิร์ฟเวอร์โหนดด่วนอื่น ๆ ก็โอเค) ... มันเริ่มทำงานหลังจากเพิ่ม lazyConnect: true, ในการกำหนดค่าแหล่งข้อมูล

อย่าถามฉันว่าทำไมมันถึงช่วย ฉันไม่รู้. ฉันวางข้อมูลนี้ไว้ที่นี่สำหรับผู้ที่มีปัญหาเดียวกันเท่านั้น


โหวตให้กับความเต็มใจที่จะช่วยเหลือและแนวทางแก้ไขที่อาจช่วยค้นหาสาเหตุที่แท้จริง
Titou

2

มาจาก Google ที่นี่พร้อมโซลูชันสำหรับ High Sierra

มีการเปลี่ยนแปลงบางอย่างในการตั้งค่าเครือข่ายของ macos และบางแอพ (รวมถึง ping) ไม่สามารถแก้ไข localhost ได้

การแก้ไข / etc / hosts ดูเหมือนจะเป็นการแก้ไข:

cmd: sudo nano /etc/hosts/ เนื้อหา127.0.0.1 localhost

หรือเพียงแค่ (ถ้าคุณแน่ใจว่า / etc / hosts ของคุณว่างเปล่า) sudo echo '127.0.0.1 localhost' > /etc/hosts


2

ฉันพบปัญหานี้เมื่อใช้ Git Bash บน Windows ฉันวิ่งnpm startหรือnode app.js. หลังจากยกเลิกด้วย Ctrl + C ไม่นานและพยายามเริ่มเซิร์ฟเวอร์อีกครั้งโดยใช้npm startหรือnode app.jsฉันได้รับข้อความแสดงข้อผิดพลาดนี้

เมื่อฉันทำสิ่งนี้กับพรอมต์คำสั่งของ Windowsปกติมันก็ใช้ได้ดี

หรือคุณสามารถทำได้อีกวิธีหนึ่ง เปิดตัวจัดการงานและค้นหาแถว " Node.js: JavaScript ฝั่งเซิร์ฟเวอร์ " เลือกที่และงานปลาย ตอนนี้ควรใช้งานได้แล้ว

ขอบคุณ.


2

หากคุณต้องการปิดเพียงพอร์ตเดียวให้รันคำสั่งนี้ kill -9 $(lsof -t -i:3000)

ความแตกต่างระหว่างpkillและkillคือบางคนแปรรูปดิน ในการฆ่าคุณใช้ตัวกรอง คุณเพียงแค่หยุดพอร์ตที่คุณต้องการ

pkillคำสั่งปิดกระบวนการโหนดทั้งหมด pkill -9 node

ใช้ pkill เพื่อหลีกเลี่ยงการรั่วไหลของหน่วยความจำที่เกิดขึ้นเป็นครั้งคราวระหว่างการพัฒนา หากมีโหนดมากกว่าหนึ่งโหนดก็จะฆ่าพวกเขาทั้งหมด

การใช้สคริปต์ในpackage.jsonเป็นตัวอย่างเช่นกัน

"scripts": {
    "server:start": "cd server && yarn start",
    "server:restart": "cd server && yarn restart",
    "frontend:start": "cd frontend && yarn start",
    "frontend:restart": "kill -9 $(lsof -t -i:4200) && yarn start:frontend"
},
"scripts": {
    "start": "nodemon --watch 'src/**/*.ts' --ignore 'src/**/*.spec.ts' --exec 'ts-node' src/index.ts",
    "restart": "pkill -9 node && start",
    "kill": "pkill -9 node"
},


1

ลองเปิด localhost ในเบราว์เซอร์ของคุณ เพียงพิมพ์: localhost:3000ในแถบที่อยู่

หากแอปเปิดขึ้นแสดงว่าก่อนหน้านี้ของคุณnpm runยังคงทำงานอยู่ ตอนนี้คุณสามารถทำการเปลี่ยนแปลงโค้ดและดูเอฟเฟกต์ได้หากคุณกำลังออกแบบแอพเดียวกันหรือหากคุณต้องการเรียกใช้แอพอื่นเพียงแค่ปรับแต่งโค้ด (ใน index.js ของแอพที่ทำงานก่อนหน้านี้) เล็กน้อยและ ( อาจจะรีเฟรชแท็บเบราว์เซอร์) เพื่อให้มันพัง;) ..... ตอนนี้ไปรันnpm run startอีกครั้งจากไดเรกทอรีแอปใหม่ของคุณ หวังว่านี่จะช่วยได้! :)

หรือ

คุณสามารถเปิดตัวจัดการงาน (WINDOWS_KEY + X> ตัวจัดการงาน) และคุณจะเห็นแถว "Node.js: JavaScript ฝั่งเซิร์ฟเวอร์" เลือกสิ่งนั้นและสิ้นสุดงาน .... ควรใช้งานได้แล้ว !!



หากไม่เป็นเช่นนั้นให้เปลี่ยน.envไฟล์ของแอปเพื่อรวมport:3002และเรียกใช้แอปใหม่ สิ่งนี้จะช่วยให้คุณสามารถเรียกใช้แอพสองแอพแยกกันบนพอร์ตต่างๆ ไชโย !!




0

อาจเป็นกระบวนการของผู้ดูแลระบบที่ทำงานอยู่เบื้องหลังและnetstatไม่แสดงสิ่งนี้
ใช้tasklist | grep nodeเพื่อค้นหา PID ของกระบวนการผู้ดูแลระบบนี้จากนั้นkill PID


0

หากคุณใช้ webstorm ตรวจสอบให้แน่ใจว่าพอร์ตเริ่มต้นของคุณไม่ใช่ 3000 จากไฟล์ -> settings -> Build, Execution, Deployment -> Debugger และมีการเปลี่ยนแปลง

พอร์ตเซิร์ฟเวอร์ในตัว

และตั้งค่าเป็น "63342" หรือดูคำตอบนี้ เปลี่ยน WebStorm LiveEdit Port (63342)


0

ในสคริปต์ package.json inlcude:

"start": "nodemon app.js --delay 1500ms"

ฉันเชื่อว่าปัญหานี้เกิดขึ้นกับฉันในตอนที่พอร์ตเก่าไม่ได้ปิดตัวลงทันเวลาโดย nodemon สำหรับการรีสตาร์ท ฉันประสบปัญหาในการใช้ Multer


ปรับการหน่วงเวลาตามต้องการ
Kalkhas

0

อาจเพิ่มเมธอด server หรือ app listen () ได้ 2 ที่ ค้นหาวิธีการฟัง () ในการเริ่มต้นแอปพลิเคชันนั่นคือสาเหตุที่ส่งคืนเมื่อเซิร์ฟเวอร์เริ่มต้นที่พอร์ต XXXX และพอร์ต XXXX แล้วข้อความที่ใช้งานมาพร้อมกัน


0

ในสถานการณ์ของฉันฉันเพิ่งเริ่มใช้ VS Code และทำตามบทช่วยสอนโดยใช้ Sequelize ในที่สุดฉันก็มีไฟล์ bin / www ที่มี listen () อยู่ในนั้น ฉันไม่รู้เกี่ยวกับเรื่องนี้และฉันกำลังเรียกใช้แอพของฉันโดยเรียกใช้ node app.js เมื่อมันใช้งานไม่ได้ฉันจึงเพิ่มสิ่งเซิร์ฟเวอร์ด่วนด้วย. listen () (ซึ่งใช้งานได้ดี)

แต่เมื่อเริ่มใช้ nodemon และ VSCode มันชี้ไปที่ bin / www และนั่นก็ต้องใช้ app.js ของฉัน

เรื่องสั้นขนาดยาวฉันได้เพิ่ม. listen () ไปยัง app.js ของฉันและกำลังเรียกใช้ app.js โดยตรงเมื่อฉันไม่ควรเพิ่มสิ่งนั้นและเรียกใช้ bin / www


0

ในอูบุนตูก่อนอื่นให้จับกระบวนการโดยใช้หมายเลขพอร์ต: sudo lsof -i: 3000จากนั้นใช้คำสั่ง kill เพื่อฆ่ากระบวนการตัวอย่างเช่นหากกระบวนการ PID คือ 4493 คำสั่งใช้: kill 4493สำหรับ mac หรือ windows ค้นหาคำสั่งที่เกี่ยวข้อง

ป้อนคำอธิบายภาพที่นี่


0

ฉันได้แก้ไขปัญหานี้เนื่องจาก MongoDB หรือมีแอปอื่นที่คุณเคยใช้งานมาก่อนในพอร์ตนี้ดังนั้นเพื่อแก้ปัญหานี้จะฆ่ากระบวนการจากตัวจัดการงานหรือเพียงแค่เปลี่ยนหมายเลขของพอร์ตจาก 3000 เป็นอีกแอปหนึ่ง


0

มันง่ายมาก คุณสามารถแก้ไขได้ใน 2 ขั้นตอนง่ายๆ

  1. ตรวจสอบตัวแปรสภาพแวดล้อมของคุณว่ามีคีย์ / รายการชื่อ "PORT" หรือไม่
  2. หากพบให้ลบรายการนั้นหรือเปลี่ยนชื่อเป็นอย่างอื่น

ปรากฎว่ามีโปรแกรมอื่นกำลังใช้ตัวแปรนั้นอยู่ โดยปกติเมื่อคุณเริ่มการตอบสนองสคริปต์จะมองหาตัวแปรสภาพแวดล้อมที่มีชื่อเรื่อง PORT


-1

ก่อนที่จะเรียกใช้ nodemon โปรดเริ่ม mongod ก่อน คุณจะไม่ได้รับข้อผิดพลาดนี้ :)


-2

ตรวจสอบกระบวนการที่ทำงานบนพอร์ตเดียวกันโดยป้อนคำสั่ง:

sudo ps -ef

คุณสามารถค้นหากระบวนการที่รันบนพอร์ตโหนดตามลำดับจากนั้นฆ่าโหนดโดย

kill -9 <node id>

หากปัญหายังคงอยู่ให้ฆ่าโหนดทั้งหมด

killall node

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.