โหนด / Express: EADDRINUSE, Address ที่ใช้งานอยู่ - Kill server


442

ฉันมีเซิร์ฟเวอร์ง่าย ๆ ทำงานใน node.js โดยใช้การเชื่อมต่อ:

var server = require('connect').createServer();
//actions...
server.listen(3000);

ในรหัสของฉันฉันมีตัวจัดการจริง แต่นั่นเป็นแนวคิดพื้นฐาน ปัญหาที่ฉันได้รับคือ

EADDRINUSE, Address already in use

ฉันได้รับข้อผิดพลาดนี้เมื่อเรียกใช้แอปพลิเคชันของฉันอีกครั้งหลังจากที่เกิดข้อผิดพลาดหรือข้อผิดพลาด ctr + zเนื่องจากผมไม่ได้เปิดตัวอย่างใหม่ของฉันใกล้ขั้วจากกระบวนการที่มี

ฉันค่อนข้างแน่ใจทั้งหมดที่ฉันต้องทำคือปิดเซิร์ฟเวอร์หรือการเชื่อมต่อ ฉันพยายามโทรserver.close()เข้าprocess.on('exit', ...);โดยไม่มีโชค


39
ที่จริงแล้วแทนที่จะเป็นCtrl + zคุณควรใช้Ctrl + cซึ่งจะปิดโปรแกรมอย่างถูกต้องโดยการส่ง SIGQUIT :) ดูวิกิสำหรับรายละเอียดเพิ่มเติม :)
nacho4d

1
คุณหมายถึง SIGINT SIGQUIT เกิดจาก `ctrl + \`
Xedecimal

53
ลองpkill nodejsหรือpkill nodeถ้าใน UNIX เหมือน OS
เจอราร์ด

1
ฉันมีปัญหาที่คล้ายกันและพบว่าแพคเกจนี้จะช่วยให้คุณออกอย่างหมดจดเมื่อคุณ CTRL + C: npmjs.com/package/exit-hook
Jazzy

1
1. ดูเหมือนว่ามีกระบวนการที่เป็นอันตรายหรือ ID ที่ตายแล้วเข้าสู่พอร์ตดังนั้นบริการ Node Based จึงไม่เริ่มทำงานและโยนข้อผิดพลาด PORT IN USE (ที่อยู่ผิดพลาดในการใช้งาน) 2. เราพยายามค้นหาวิธีการปล่อย พอร์ต 10000 โดยไม่ต้องรีบูตเซิร์ฟเวอร์
abksharma

คำตอบ:


147

process.on('exit', ..)ไม่ได้ถูกเรียกถ้ากระบวนการขัดข้องหรือถูกฆ่า มันถูกเรียกเมื่อสิ้นสุดเหตุการณ์ลูปเท่านั้นและเนื่องจากการserver.close() เรียงลำดับของสิ้นสุดลูปเหตุการณ์ (มันยังคงต้องรอให้สแต็คกำลังทำงานอยู่ที่นี่และที่นั่น) มันไม่มีเหตุผลที่จะต้องใส่มันเข้าไปในเหตุการณ์จบ ...

เมื่อเกิดความผิดพลาดทำprocess.on('uncaughtException', ..)และฆ่าได้process.on('SIGTERM', ..)

ดังที่ได้กล่าวไว้ SIGTERM (สัญญาณ kill ปกติ) ทำให้แอพล้างข้อมูลในขณะที่ SIGKILL (ยกเลิกทันที) จะไม่ยอมให้แอปทำอะไรเลย


3
นอกจากนี้ยังมีประโยชน์เกี่ยวกับ process.on ('SIGINT', ... )
farincz

487

คุณยังสามารถไปที่เส้นทางบรรทัดคำสั่ง:

ps aux | grep node

เพื่อรับรหัสกระบวนการ

แล้ว:

kill -9 PID

การทำ -9 เมื่อฆ่าส่ง SIGKILL (แทนที่จะเป็น SIGTERM) SIGTERM บางครั้งฉันไม่สนใจโหนด


1
ps aux | grep nodeไม่แสดงอะไรเลย ยังคงtextareaserver --editor-cmd='gvim -f'ล้มเหลว: 14 Mar 21:19:30 - พร้อมใช้งาน socket.io - การเชื่อมต่อที่ยอมรับตอนนี้สามารถเริ่มต้นเซิร์ฟเวอร์: EADDRINUSE, ที่อยู่ที่ใช้งานอยู่แล้ว
Jean Jordaan

75
ทำไมจึงเป็นเช่นนี้มากกว่าkillall -9 node
Martin Josefsson

1
pidofมีประโยชน์ด้วย
JVE999

25
ฉันใช้คำตอบนี้เป็นเวลานานจากนั้นหนึ่งวันเขียนมันเป็นหนึ่งซับเพื่อความสะดวก .. คำสั่งนี้จะฆ่ากระบวนการใด ๆ ที่ทำงานบนพอร์ตที่กำหนด (8000 ในตัวอย่างนี้): lsof -n -i4TCP:8000 | grep LISTEN | tr -s ' ' | cut -f 2 -d ' ' | xargs kill -9
lukejacksonn

1
ฉันมีเซิร์ฟเวอร์หลายโหนดทำงานพร้อมกันแอปอิเล็กตรอนบางตัว ผมใช้เพียงkillกับกระบวนการ id killallเฉพาะแทน
tuliomir

227

ก่อนอื่นคุณต้องรู้ว่ากระบวนการใดที่ใช้ port 3000

sudo lsof -i :3000

นี่จะแสดงรายการฟังPIDทั้งหมดบนพอร์ตนี้เมื่อคุณมีPID แล้วคุณสามารถยกเลิกมันด้วยรายการต่อไปนี้:

kill -9 {PID}

17
คำสั่งนี้ระบุ PID อย่างชัดเจนซึ่งแตกต่างจากผลลัพธ์ของps aux | grep nodeฉัน ฉันไม่ต้องการด้วยsudo
ฟิลกิบบินส์

นี่คือคำตอบที่ดีที่สุด ทำงานได้ดีสำหรับฉันด้วยพอร์ต 8081 โดยใช้ปฏิกิริยาพื้นเมืองกับเส้นด้าย
Fernando Barbosa

มันใช้งานได้ดีสำหรับฉัน ฉันสามารถระบุได้ว่าใช้พอร์ต 3,000 ได้ที่ไหนและปิดอยู่ sudoฉันยังไม่จำเป็นต้อง
Campalo

ดีมาก. ฉันพยายามหลังจากได้รับคำสั่งkillall -9 {COMMAND}เช่นkillall -9 node
ถนนเงิน

ว้าวใช้ได้กับฉันไหม
Anoop PS

162

ฉันกดปุ่มนี้บนแล็ปท็อปที่ใช้ win8 สิ่งนี้ใช้ได้ผล

เรียกใช้ cmd.exe เป็น 'ผู้ดูแลระบบ':

C:\Windows\System32>taskkill /F /IM node.exe
SUCCESS: The process "node.exe" with PID 11008 has been terminated.

ฉันเรียกใช้จากหน้าต่างคำสั่งและปิดโดยไม่ได้ตั้งใจ โหนดยังคงทำงานอยู่ที่แบ็คกราวด์ ... (แม้หลังจากเซสชันถูกยกเลิก) ในกรณีของฉันเมื่อฉันปิดแท็บเบราว์เซอร์ที่เชื่อมต่อกับมันผ่านทางซ็อกเก็ตเว็บในที่สุดมันก็ถูกยกเลิก
Bertus Kruger

6
taskkill /F /IM node.exeทำงานได้อย่างมีเสน่ห์สำหรับฉันบน Windows จากไดเรกทอรีใด ๆ :-) ขอบคุณสำหรับการแบ่งปัน !!
Marty McGee

2
นี่เป็นทางออกเดียวในการทำงานแบบบรรทัดเดียวที่ฉันสามารถตรวจสอบ Windows ได้
Code Whisperer

4
ใช้งานได้บน windows 10 ฉันไม่จำเป็นต้องเรียกใช้ cmd.exe ในฐานะผู้ดูแลระบบ btw
เกล็นเวอร์เนอร์

74

ตรวจสอบ PID ie id ของกระบวนการที่ทำงานบนพอร์ต 3000 ด้วยคำสั่งด้านล่าง:

lsof -i tcp:3000

มันจะออกผลลัพธ์ดังนี้:

COMMAND  PID   USER   FD   TYPE  DEVICE  SIZE/OFF NODE NAME
node     5805  xyz    12u  IPv6  63135    0t0     TCP  *:3000 (LISTEN)

ตอนนี้ฆ่ากระบวนการโดยใช้:

kill -9 5805

สิ่งนี้ใช้ได้กับฉันเมื่อใช้ปลั๊กอินออฟไลน์ของ sls
Junaid Atique

ขอบคุณสำหรับสิ่งนี้! ฉันเพิ่งเริ่มเรียนรู้ปฏิกิริยาเช่นเมื่อหลายชั่วโมงก่อน :) หลังจากหยุดเซิร์ฟเวอร์ฉันรันใหม่อีกครั้งเพื่อพบข้อผิดพลาดเท่านั้น
เกล็น

ฉันจะไม่ได้เอาต์พุตถ้าใช้สูญหาย นี่หมายความว่าไม่มีกระบวนการในส่วนนั้นหรือไม่?
x89

42

ฉันพบวิธีแก้ปัญหานี้ลองใช้สิทธิ์ใช้งาน sudo

  sudo pkill node

ฉันยังเห็นกระบวนการโหนดด้วยคำสั่งนี้:ps aux | grep node
IgorGanapolsky

29

ลินุกซ์

รันpsและพิจารณา PID ของกระบวนการโหนดของคุณ

จากนั้นเรียกใช้ sudo kill PID

ของ windows

ใช้ tasklist เพื่อแสดงรายการกระบวนการที่กำลังทำงานอยู่:

tasklist /O

จากนั้นฆ่ากระบวนการโหนดเช่นนั้น (ใช้ PID ที่ได้รับจากtasklistคำสั่ง):

taskkill /pid PID

1
และถ้าบน Windows?
เทรเวอร์

1
เช่นเดียวกับบันทึก ... ด้วยเหตุผลบางอย่างฉันต้องใช้เครื่องหมายสแลชสองครั้งบนแฟล็กของฉันสำหรับคำสั่ง taskkill จาก git-bash: taskkill //IM node.exe และฉันเพิ่งฆ่าโหนด ทำงาน
nawlbergs

23

นี่คือหนึ่งซับ (แทนที่ 3000 ด้วยพอร์ตหรือตัวแปร config):

kill $(lsof -t -i:3000)

20

ฉันได้รับข้อผิดพลาดนี้ครั้งเดียวและใช้วิธีการมากมายที่นี่

ปัญหาของฉันคือฉันมีapp.listen(3000);สายที่สองในสคริปต์ app.js เดียวกัน app.listen () แรกประสบความสำเร็จโดยที่สองโยนข้อผิดพลาด

คำสั่งที่มีประโยชน์อื่นที่ฉันเจอซึ่งช่วยฉันในการดีบักsudo fuser -k 3000/tcpซึ่งจะฆ่ากระบวนการโกงใด ๆ ที่คุณอาจเริ่มต้น (กระบวนการบางอย่างอาจเริ่มต้นใหม่เช่นถ้าทำงานด้วย forever.js แต่มันมีประโยชน์สำหรับฉัน)


ปัญหาเดียวกันที่นี่ ... แปลกที่มันทำงานอย่างถูกต้องในการแก้จุดบกพร่องในขณะที่ได้รับข้อผิดพลาดนี้สำหรับการทำงานnpm start
4251

16

สำหรับ windows ให้เปิด Task Manager และค้นหากระบวนการ node.exe ฆ่าพวกมันทั้งหมดด้วย End Task

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


1
ง่ายและไม่ซับซ้อนสำหรับผู้ใช้ windows
23711

มันได้ผล. ขอบคุณ
Najathi

14
ps aux | grep node
kill -9 [PID] (provided by above command)

รายละเอียด:


  1. ps จะให้สถานะของกระบวนการ, aux ให้รายการของ: กระบวนการผู้ใช้ทั้งหมด, u: กระบวนการของผู้ใช้เอง, x: กระบวนการอื่น ๆ ทั้งหมดที่ไม่ได้เชื่อมต่อกับเทอร์มินัล
  2. สัญลักษณ์ท่อ: | จะผ่านผลลัพธ์ของ ps aux เพื่อจัดการเพิ่มเติม
  3. grep จะค้นหาสตริงที่ระบุ (โหนดในกรณีของเรา) จากรายการที่จัดทำโดย ps aux

12

FYI sudo fuser -k 3000/tcpคุณสามารถฆ่ากระบวนการในคำสั่งอย่างใดอย่างหนึ่ง สิ่งนี้สามารถทำได้สำหรับพอร์ตอื่น ๆ เช่น 8000, 8080 หรือ 9000 ซึ่งใช้กันทั่วไปสำหรับการพัฒนา



11

ก่อนอื่นให้ตรวจสอบสิ่งที่ใช้งานอยู่:

sudo lsof -nP -i4TCP:3000 | grep LISTEN

คุณจะได้รับสิ่งที่ชอบ:

php-fpm 110 root    6u  IPv4 0x110e2ba1cc64b26d      0t0  TCP 127.0.0.1:3000 (LISTEN)
php-fpm 274 _www    0u  IPv4 0x110e2ba1cc64b26d      0t0  TCP 127.0.0.1:3000 (LISTEN)
php-fpm 275 _www    0u  IPv4 0x110e2ba1cc64b26d      0t0  TCP 127.0.0.1:3000 (LISTEN)

จากนั้นคุณสามารถฆ่ากระบวนการดังต่อไปนี้:

sudo kill 110

จากนั้นคุณจะสามารถเรียกใช้โดยไม่รับ EADDRINUSE ::: ข้อผิดพลาด 3000


ฉันใช้ nodemon และเริ่มบริการอีกครั้ง เป็นวิธีการฆ่า nodemon ของพวกเขาหรือไม่?
Smit Patel

10

สำหรับ Visual Studio Noobs อย่างฉัน

คุณอาจใช้กระบวนการนี้ในเทอร์มินัลอื่น!

หลังจากที่ปิดสถานีในVisual Studio , สถานีเพียงแค่หายไป

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

ดังนั้นฉันจึงอยู่ที่สถานีแรกและ ... Voila ฉันกำลังเรียกใช้เซิร์ฟเวอร์ที่นั่น

อาคารหลายแห่งโดยไม่ได้ตระหนักถึงมัน


1
โอ้ใช่พี่ชายของฉัน
Jaydeep Shil

8

ตัวจัดการงาน (ctrl + alt + del) ->

แท็บกระบวนการ ->

เลือกกระบวนการ "node.exe" และกด "End Process"


เหตุใดจึงต้องฆ่ากระบวนการโหนดทั้งหมดหากสิ่งที่ต้องการคือการฆ่ากระบวนการพอร์ตโหนด
Jimmy Obonyo Abor

8

คุณอาจพบสถานการณ์ที่แม้กระทั่งการฆ่าเธรดหรือกระบวนการจะไม่ยุติแอป (จริง ๆ แล้วสิ่งนี้เกิดขึ้นกับฉันบน Linux และ Windows ทุกครั้งในบางครั้ง) บางครั้งคุณอาจมีอินสแตนซ์ที่คุณไม่ได้ปิด

จากสถานการณ์ดังกล่าวฉันต้องการเพิ่มในpackage.json:

"scripts": {
    "stop-win": "Taskkill /IM node.exe /F",
    "stop-linux": "killall node"
},

ฉันสามารถเรียกพวกเขาโดยใช้:

npm run stop-win
npm run stop-Linux

คุณสามารถได้รับนักเล่นและทำคำสั่ง BIN เหล่านั้นด้วยการตั้งค่าสถานะการโต้แย้งหากคุณต้องการ คุณยังสามารถเพิ่มคำสั่งเหล่านั้นเป็นคำสั่งที่จะดำเนินการภายในส่วนคำสั่ง try-catch



4

คุณอาจใช้ hot-node เพื่อป้องกันเซิร์ฟเวอร์ของคุณไม่ให้ทำงานล้มเหลว / ทำงานผิดพลาด Hot-node รีสตาร์ทแอ็พพลิเคชัน nodejs ให้คุณโดยอัตโนมัติเมื่อใดก็ตามที่มีการเปลี่ยนแปลงในโปรแกรมโหนด [ต้นฉบับ] / กระบวนการ [กำลังเรียกใช้โปรแกรมโหนด]

ติดตั้ง hot-node โดยใช้ npm โดยใช้อ็อพชันโกลบอล:

npm ติดตั้ง -g hotnode


pm2 เป็นตัวเลือกที่ดีกว่า แข็งแกร่งยิ่งขึ้นตัวเลือกเพิ่มเติม และไม่มีปัญหาเมื่อทำงานเหมือนรากที่มีตลอดไป
ลูคัส

@ Lucas ปัญหารากนี้ในตลอดไปที่คุณพูดถึงคืออะไร? ฉันโชคไม่ดีที่ถูกบังคับให้ต้องใช้ตลอดไปแทนที่จะเป็น PM2 กับผลิตภัณฑ์ในที่ทำงาน (เนื่องจากอึใบอนุญาตบางอย่าง) และสิ่งนี้ทำให้ฉันกังวลมาก!
GPX

4

ด้วยความเคารพต่อคำตอบทั้งหมดในแบบฟอร์มฉันต้องการเพิ่มจุด

ฉันพบว่าเมื่อฉันยุติ app node ด้วยความผิดพลาดโดยใช้ Ctrl + Z ในครั้งต่อไปเมื่อฉันพยายามเปิดมันก็มีข้อผิดพลาด EADDRINUSE เดียวกัน

เมื่อฉันใช้ Ctrl + C เพื่อยกเลิกแอปโหนดในครั้งต่อไปที่ฉันเปิดมันก็ทำได้โดยไม่ต้องผูกปม

การเปลี่ยนหมายเลขพอร์ตเป็นอย่างอื่นที่ไม่ใช่ข้อผิดพลาดสามารถแก้ไขปัญหาได้


1
Ctrl + C ถูกต้อง ฉันใช้หมายเลขพอร์ตเดิมเหมือนก่อนหน้าและใช้งานได้เหมือนเดิม
vipulnj

2
<key> Ctrl-Z </key> ไม่ได้หยุดกระบวนการ มันวางไว้ในพื้นหลังเพื่อให้คุณสามารถเรียกใช้คำสั่งอื่น ๆ นี่คือสิ่งที่เชลล์ Unix เมื่อต้องการใช้กระบวนการต่อfgในคอนโซลเดียวกันนั้น จากนั้นคุณสามารถเห็นสิ่งที่เกิดขึ้นในเซิร์ฟเวอร์นั้นหลังจากพิมพ์คำสั่งต่าง ๆ ในบรรทัดคำสั่ง
Alexis Wilke

4

บน Linux

เพิ่มฟังก์ชั่นเพื่อ~/.bashrc:

function killTcpListen () {
  kill -9 $(lsof -sTCP:LISTEN -i:$1 -t)
}

ดึงการเปลี่ยนแปลง: source ~/.bashrc

และใช้มัน: killTcpListen 3000


4

ความคิดเห็นของ @Gerard เขียนใหม่ในคำตอบของฉัน:

ลองpkill nodejsหรือpkill nodeถ้าในUNIX เหมือน OS

นี่จะฆ่ากระบวนการที่รันโหนดเซิร์ฟเวอร์ที่รันบนพอร์ตใด ๆ ทำงานให้ฉัน

Namaste🙏


3

ในกรณีที่ตรวจสอบว่าคุณได้เพิ่มบรรทัดนี้หลายครั้งโดยไม่ได้ตั้งใจ

app.listen(3000, function() {
  console.log('listening on 3000')
});

โค้ดด้านบนมีไว้สำหรับด่วน แต่เพียงตรวจสอบว่าคุณพยายามใช้พอร์ตเดียวกันสองครั้งในรหัสของคุณหรือไม่


3

Win10, คอมไพล์ bash v2.15, โหนด v8.9.1, npm v5.5.1

ฉันมี package.json สคริปต์เพื่อเริ่มโหนด: "start": "node index.js"

เมื่อใดก็ตามที่ฉันใช้มันไม่ว่าฉันจะฆ่าด้วย ctrl + c ฉันก็พบปัญหานี้

ถ้าฉันเพิ่งวิ่งnode index.jsจากคอมไพล์ทุบตีแทนnpm run startและฆ่าด้วย ctrl + c ฉันจะไม่ได้รับข้อผิดพลาดนี้เลย

ฉันไม่แน่ใจว่าทำไม แต่ฉันคิดว่านี่อาจช่วยคน


1
ฉันได้รับปัญหาเดียวกันกับการตั้งค่าเดียวกันเป็นหลัก ในกรณีของฉันฉันสังเกตเห็นว่าการเรียกใช้แอปด่วนผ่าน npm จะวางกระบวนการสองกระบวนการ แต่จะปิดเพียงหนึ่งกระบวนการเมื่อใช้ ctrl + c เมื่อเริ่มต้นแอปด้วยโหนดเพียงกระบวนการเดียวเท่านั้นที่เปิดและปิดอย่างถูกต้อง
worc

1
นี้คอมไพล์สำหรับ Windows ปัญหาเป็นชนิดของแสงส่องในสิ่งที่ทั้ง ดูเหมือนว่าอาจมีข้อผิดพลาดบางแห่งระหว่างมินต์และการพึ่งพา cygwin
worc

3

วิธีแก้ปัญหา UI สำหรับผู้ใช้ Windows: ฉันพบว่าคำตอบยอดนิยมไม่ได้ผลสำหรับฉันพวกเขาดูเหมือนจะเป็นคำสั่งสำหรับผู้ใช้ Mac หรือ Linux ฉันพบวิธีแก้ปัญหาง่ายๆที่ไม่ต้องใช้คำสั่งใด ๆ ในการจำ: เปิดตัวจัดการงาน (ctrl + shift + esc) ดูกระบวนการพื้นหลังที่ทำงานอยู่ ค้นหา Node.js อะไรก็ได้และสิ้นสุดภารกิจ

หลังจากฉันทำสิ่งนี้ปัญหาก็หายไปสำหรับฉัน ตามที่ระบุไว้ในคำตอบอื่น ๆ มันเป็นกระบวนการพื้นหลังที่ยังคงทำงานอยู่เพราะข้อผิดพลาดที่พบก่อนหน้านี้และฟังก์ชั่นออก / ทำความสะอาดปกติไม่ได้รับการเรียกดังนั้นวิธีหนึ่งที่จะฆ่าพวกเขาคือการหากระบวนการใน Task Manager และฆ่ามัน . หากคุณรันกระบวนการจากเทอร์มินัล / powerShell คุณสามารถใช้ ctrl + c เพื่อฆ่ามันได้


ใช่ถูกต้องขอบคุณสำหรับคำตอบของคุณ
DINA TAKLIT

2

โหนดกำลังทำงานอยู่ในหน่วยความจำและล็อคพอร์ตนั้นไว้ บน Windows ปัญหานี้จะเกิดขึ้นเช่นเดียวกับปัญหาของ Windows ส่วนใหญ่ได้รับการแก้ไขโดยกดCTRL+ ALT+ DELและ / หรือรีบูตเครื่อง


คำถามนี้ตอบคำถามอื่น ๆ มากมาย ปิดแล้วเปิดใหม่อีกครั้ง อัจฉริยภาพ
datUser

1

เหตุผลสำหรับปัญหานี้คือ:

  1. แอปพลิเคชันใด ๆ อาจทำงานบนพอร์ตนี้เช่น Skype
  2. โหนดอาจทำงานล้มเหลวและพอร์ตอาจไม่ได้รับการปลดปล่อย
  3. คุณอาจลองเริ่มเซิร์ฟเวอร์มากกว่าหนึ่ง เพื่อแก้ปัญหานี้เราสามารถดูแลบูลีนเพื่อตรวจสอบว่าเซิร์ฟเวอร์เริ่มทำงานหรือไม่ มันควรจะเริ่มต้นถ้าบูลีนกลับเท็จหรือไม่ได้กำหนด;

1

server.close () ใช้เวลาสักครู่เพื่อปิดการเชื่อมต่อดังนั้นเราควรทำการโทรแบบอะซิงโครนัสเช่นนี้:

await server.close();

สำคัญ: เมื่อใช้งานรอเราจะต้องใช้คำหลักasyncในฟังก์ชั่นการห่อหุ้มของเราเช่น:

async () => {
  await server.close();
}

1

ใช้คำสั่งด้านล่างในเทอร์มินัล / cmd เพื่อเปลี่ยนพอร์ต (npm run dev สำหรับ node.js) คุณอาจมีคำสั่งอื่น ๆ เพื่อเรียกใช้แอปของคุณส่วนใหญ่จะทำงานในขณะที่เปลี่ยนพอร์ตง่ายขึ้นและเร็วขึ้น นอกจากนี้คุณสามารถใช้หมายเลขพอร์ตใด ๆ ที่ว่างในระบบของคุณแทน 3002

PORT=3002 npm run dev

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

นอกจากนี้เวลาในการเปลี่ยนหมายเลขพอร์ตในรหัสของคุณ

server.listen(3002);

0

ซึ่งหมายความว่าคุณมีเซิร์ฟเวอร์โหนดสองเครื่องที่ทำงานบนพอร์ตเดียวกันหากเซิร์ฟเวอร์หนึ่งกำลังทำงานบนพอร์ตให้บอกว่า 3000 เปลี่ยนอีกเซิร์ฟเวอร์หนึ่งเป็นพอร์ตอื่นให้บอกว่า 3001 และทุกอย่างจะทำงานได้ดี

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