Cách khắc phục Lỗi: nghe EADDRINUSE trong khi sử dụng nodejs?


466

Nếu tôi chạy một máy chủ có cổng 80 và tôi cố gắng sử dụng xmlHTTPrequest thì tôi gặp lỗi này:Error: listen EADDRINUSE

Tại sao nó lại có vấn đề với nodejs, nếu tôi muốn thực hiện một yêu cầu, trong khi tôi chạy một máy chủ trên cổng 80? Đối với các webbrowsers, đó không phải là vấn đề: tôi có thể lướt trên internet, trong khi máy chủ đang chạy.

Máy chủ là:

  net.createServer(function (socket) {
    socket.name = socket.remoteAddress + ":" + socket.remotePort;
    console.log('connection request from: ' + socket.remoteAddress);
    socket.destroy();
  }).listen(options.port);

Và yêu cầu:

var xhr = new XMLHttpRequest();

xhr.onreadystatechange = function() {
    sys.puts("State: " + this.readyState);

    if (this.readyState == 4) {
        sys.puts("Complete.\nBody length: " + this.responseText.length);
        sys.puts("Body:\n" + this.responseText);
    }
};

xhr.open("GET", "http://mywebsite.com");
xhr.send();

Bạn có chắc chắn Options.port được định nghĩa là 80? Mã XHR có chạy trong trình duyệt không? Bạn có thể chạy "nc -l 0.0.0.0 80" khi máy chủ này không chạy không?
Timothy Meade

Xem một vấn đề tương tự tại stackoverflow.com/questions/8553957/
Kẻ

Bạn đang dùng hệ thống nào? Một số hệ thống yêu cầu sudo nếu bạn muốn nghe các cổng dưới một ngưỡng nhất định.
Kebman

vấn đề này phát sinh do bạn chạy máy chủ của mình trên cổng đó và bạn đã không đóng cổng đó, lỗi rõ ràng nói rằng cổng đó đã được sử dụng, điều này xảy ra với tôi là khi tôi mở một dự án mới trong mã mà không đóng các dự án khác (mở bằng cách kéo và thả)
Ashad Nasim

Câu trả lời:


412

EADDRINUSEcó nghĩa là số cổng listen()cố gắng liên kết máy chủ đã được sử dụng.

Vì vậy, trong trường hợp của bạn, phải có máy chủ chạy trên cổng 80 rồi.

Nếu bạn có một máy chủ web khác đang chạy trên cổng này, bạn phải đặt node.js phía sau máy chủ đó và ủy quyền thông qua nó.

Bạn nên kiểm tra listeningsự kiện như thế này, để xem máy chủ có thực sự lắng nghe không:

var http=require('http');

var server=http.createServer(function(req,res){
    res.end('test');
});

server.on('listening',function(){
    console.log('ok, server is running');
});

server.listen(80);

1
Tôi chỉ chạy máy chủ này. Befor Tôi khởi động máy chủ, xmlhttprequest hoạt động. Sau khi tôi khởi động máy chủ trên cổng 80, thì máy chủ cũng hoạt động hoàn hảo. Nhưng nếu tôi thực hiện một xmlhttprequest sau khi tôi khởi động máy chủ, thì tôi gặp lỗi này.
Daniel Fox

6
Điều này vẫn không gây ra lỗi nếu máy chủ đã lắng nghe?
phân chia

1
Đối với tôi, điều này là do Skype
Beep

559

Điều thực sự giúp ích cho tôi là:

killall -9 node

Nhưng điều này sẽ giết chết một quy trình hệ thống.

Với

ps ax

bạn có thể kiểm tra nếu nó hoạt động.


1
Cũng cho tôi. Trong trường hợp của tôi, tôi chỉ chạy chức năng nghe hai lần và gặp lỗi trong lần thứ hai
vabada

2
Trên một lưu ý liên quan, bạn cũng có thể đọc khi nào tôi không nên thực hiện quy trình .
Nobita

12
Vấn đề ở đây là các bạn không thoát khỏi quy trình nút một cách duyên dáng sau lần chạy đầu tiên. Do đó, nút vẫn được liên kết với cổng đó. ps aux | grep nodesẽ cho thấy điều đó. Thay vì giết chết các ứng dụng với tổ hợp phím CTRL + Z , thoát khỏi ứng dụng với tổ hợp phím CTRL + C . Điều này thoát khỏi ứng dụng một cách duyên dáng và ràng buộc cổng được loại bỏ.
riser101

22
Hơn 150 lượt bình chọn cho một giải pháp tương đương với việc đánh phần mềm của bạn bằng một cái vồ.
LeeGee

1
Giải pháp này khá có vấn đề vì cờ -9 sẽ giết quá trình mà không giải phóng bộ nhớ. Bạn thực sự chỉ nên sử dụng điều này như một giải pháp cuối cùng.
Yaki Klein

279

Những điều đã nói ở trên killall -9 node, được đề xuất bởi Patrick hoạt động như mong đợi và giải quyết vấn đề nhưng bạn có thể muốn đọc phần chỉnh sửa của câu trả lời này về lý do tại saokill -9 có thể không phải là cách tốt nhất để làm điều đó.

Trên hết, bạn có thể muốn nhắm mục tiêu vào một quá trình duy nhất thay vì giết chết tất cả quy trình đang hoạt động.

Trong trường hợp đó, trước tiên hãy lấy ID tiến trình (PID) của quy trình đang chạy trên cổng đó (giả sử 8888):

lsof -i tcp:8888

Điều này sẽ trả về một cái gì đó như:

COMMAND   PID    USER   FD   TYPE             DEVICE SIZE/OFF NODE NAME
node     57385   You   11u  IPv6 0xac745b2749fd2be3      0t0  TCP *:ddi-tcp-1 (LISTEN)

Sau đó, chỉ cần làm (ps - thực sự không . Vui lòng đọc bên dưới):

kill -9 57385

Bạn có thể đọc thêm một chút về điều này ở đây .

EDIT: Tôi đã đọc về một chủ đề khá liên quan ngày hôm nay và tình cờ thấy chủ đề thú vị này về lý do tại sao tôi không nên kill -9là một quá trình .

Nói chung, bạn nên sử dụng kill -15 trước khi kill -9 để tạo cơ hội cho mục tiêu dọn dẹp sau đó. (Các quy trình không thể bắt hoặc bỏ qua SIGKILL, nhưng chúng có thể và thường bắt SIGTERM.) Nếu bạn không cho quá trình hoàn thành những gì nó đang làm và dọn sạch, nó có thể để lại các tệp bị hỏng (hoặc trạng thái khác) rằng nó sẽ không thể hiểu được khi khởi động lại.

Vì vậy, như đã nêu, bạn nên giết quá trình trên với:

kill -15 57385

EDIT 2 : Như đã lưu ý trong một nhận xét quanh đây nhiều lần lỗi này là hậu quả của việc không thoát ra một quy trình một cách duyên dáng. Điều đó có nghĩa, rất nhiều người dân thoát khỏi một lệnh nút (hoặc bất kỳ khác) sử dụng tổ hợp phím CTRL + Z . Cách chính xác để dừng quá trình đang chạy là phát lệnh CTRL + C để thực hiện thoát sạch.

Thoát khỏi một quy trình đúng cách sẽ giải phóng cổng đó trong khi tắt. Điều này sẽ cho phép bạn khởi động lại quá trình mà không gặp phải rắc rối khi tự giết nó trước khi có thể chạy lại nó.


Tôi nên chạy lệnh này ở đâu? Trên dấu nhắc lệnh? Trên bảng điều khiển NPM?
Ulysses Alves

@UlyssesAlves chỉ cần mở một cửa sổ đầu cuối và giết tiến trình từ đó.
Nobita

@Nobita Cái này có hoạt động trong Windows không? Bây giờ tôi nhận ra nó có thể là một lệnh MAC OS. Dù sao, tôi đã khởi động lại PC của mình và không gặp phải lỗi này nữa. Tôi nghĩ rằng một số ứng dụng khác đã sử dụng cùng một nút cổng đang cố gắng sử dụng.
Ulysses Alves

2
pgrep nodecho thấy nếu bất kỳ quá trình nút đã chạy đi trên bạn. pkill nodesẽ giết em.
Josh.F

3
không dành cho windows, folks - bạn phải thử một cổng khác hoặc khởi động lại máy tính: P
Tom Stickel

62

Chỉ cần ngẩng cao đầu, đôi khi Skype sẽ lắng nghe trên cổng 80 và do đó gây ra lỗi này nếu bạn cố gắng nghe trên cổng 80 từ Node.js hoặc bất kỳ ứng dụng nào khác.

Bạn có thể tắt hành vi đó trong Skype bằng cách truy cập các tùy chọn và nhấp vào Nâng cao -> Kết nối -> Sử dụng cổng 80 (Bỏ chọn cái này)

Tắt sử dụng cổng Skype 80

PS Sau khi thực hiện thay đổi đó, đừng quên khởi động lại Skype!


14
PS Sau khi thực hiện thay đổi đó, đừng quên khởi động lại Skype!
Rob Evans

16
Đây là một trong những lỗi thiết kế đáng kinh ngạc nhất mà tôi từng thấy. Làm thế nào điên rồ là các nhà phát triển Skype mà họ từng xem xét chiếm hơn 80 hoặc 443?
AJB

5
Lớn +1 cho kỹ năng sửa lỗi của bạn, Rob.
AJB

@AJB Họ đã làm điều đó để thử và xuyên qua tường lửa giới hạn lưu lượng truy cập đi ra đối với các yêu cầu http, nhưng ở đó tường lửa không sử dụng DPI nên chỉ thực hiện chặn cổng cơ bản. Tuy nhiên ... mặc dù nó hơi ngớ ngẩn khi kích hoạt tính năng này!
Rob Evans

Vâng, điều đó xảy ra với tôi sau một chút suy nghĩ về lý do tại sao họ sẽ làm điều này. Tuy nhiên, một loại bùn thực sự xấu xí. Và ý tưởng rằng nó được kích hoạt theo mặc định chỉ là sự kiêu ngạo.
AJB

39

Bạn nên thử giết quá trình đang nghe trên cổng 80.

Killall sẽ giết tất cả các ứng dụng nút đang chạy. Bạn có thể không muốn làm điều đó. Với lệnh này, bạn chỉ có thể giết một ứng dụng đang nghe trên một cổng đã biết.

Nếu sử dụng unix hãy thử lệnh này:

sudo fuser -k 80/tcp    

1
Cảm ơn Yaki. nút killall thất bại đối với tôi nhưng điều này đã làm việc.
Pat M

Cảm ơn! killall lsof - tôi không làm việc cho tôi, nhưng điều này đã làm.
karfus

1
Bạn có thể không muốn giết tất cả các ứng dụng nút đang chạy.
Yaki Klein

28

Lý do lỗi: Bạn đang cố gắng sử dụng bậnport number

Hai giải pháp khả thi cho Windows / Mac

  1. Số cổng hiện đang sử dụng miễn phí
  2. Chọn số cổng khác cho chương trình hiện tại của bạn


1. Số cổng miễn phí

các cửa sổ

1. netstat -ano | findstr :4200
2. taskkill /PID 5824 /F

nhập mô tả hình ảnh ở đây

Mac

Bạn có thể thử netstat

netstat -vanp tcp | grep 3000

Đối với OSX El Capitan và mới hơn (hoặc nếu netstat của bạn không hỗ trợ -p), hãy sử dụng lsof

sudo lsof -i tcp:3000

nếu điều này không giải quyết được vấn đề của bạn, Macngười dùng có thể tham khảo thảo luận đầy đủ về vấn đề này Tìm (và tiêu diệt) quá trình khóa cổng 3000 trên máy Mac


2. Thay đổi số cổng?

các cửa sổ

set PORT=5000

Mac

export PORT=5000

bạn cũng có thể thực hiện một lệnh trong windows:netstat -ona | findstr ".0:PORT +0.0.0.0:0 +LISTENING" | for /f "tokens=5" %t in ('more') do taskkill /PID:%t /f
Z. Khullah

27

Trong bộ điều khiển env, bạn có thể sử dụng:

pkill node trước khi chạy tập lệnh của bạn nên thực hiện công việc.

Hãy nhớ rằng lệnh này sẽ giết tất cả node quy trình, điều này có thể đúng nếu bạn có nghĩa là một container chỉ chạy một thể hiện, chúng tôi có env như vậy nơi bạn có thể đảm bảo điều đó.

Trong bất kỳ kịch bản nào khác, tôi khuyên bạn nên sử dụng một lệnh để giết một id hoặc tên quy trình nhất định mà bạn tìm thấy bằng cách tìm kiếm nó theo lập trình. Giống như nếu quy trình của bạn được gọi, nút-server-1 bạn có thể làm pkill node-server-1.

Tài nguyên này có thể hữu ích để hiểu: https : //www.thegeek ware.com/2009/12/4-ways-to-kill-a- process-kill-killall-pkill-xkill /


2
pgrep nodetrước khi xử lý nếu bạn muốn cẩn thận một chút và xem nodequy trình nào đang chạy
Josh.F

1
Hoàn toàn!, Tôi đã nói trong trường hợp đó là một container hoặc nơi rất được kiểm soát cho quá trình.
Javier Cobos

Đây là câu trả lời tuyệt vời tôi sẽ nói hơn những người khác được cung cấp ở trên. Mọi người hãy ủng hộ nó.
Jitendra Pawar

@JavierCobos: nếu bạn đang nói trong một thùng chứa hoặc không gian được kiểm soát tương tự, vui lòng thêm thông tin đó vào chính câu trả lời. Nhiều người không ở trong những môi trường như vậy, đặc biệt là trên một cỗ máy phát triển và điều này có thể gây ra hậu quả không lường trước được. Bỏ phiếu, nhưng vui mừng thay đổi phiếu bầu với sự làm rõ thích hợp.
lindes

1
Nhiều người sẽ ... nhưng khi một người dành nhiều thời gian đáng kể giúp đào tạo các nhà phát triển cơ sở và thậm chí vượt ra ngoài bối cảnh đó, tôi có thể nói với bạn rằng rất nhiều người sử dụng câu trả lời trên Stack Overflow mà không thực sự hiểu họ đang làm gì. .. họ chỉ phải đối mặt với một vấn đề, và xem một cái gì đó được thể hiện như một giải pháp cho những gì dường như là vấn đề của họ, và họ chạy theo nó. Vì vậy, ... cá nhân tôi mong muốn trang web đưa ra những lời giải thích tốt và nuôi dưỡng những thói quen chung tốt. Vì vậy, đó là nơi tôi đến từ đó. Tôi biết đó không phải là quan điểm duy nhất, mặc dù. :)
buộc

16

Ứng dụng của bạn đã chạy trên cổng 8080 đó. Sử dụng mã này để giết cổng và chạy lại mã của bạn

sudo lsof -t -i tcp:8080 | xargs kill -9

Câu hỏi tham khảo cổng 80, chứ không phải 8080. Ngoài ra, trong khi điều này có thể sẽ giúp loại bỏ quá trình vi phạm trên cổng 8080, sử dụng kill -9gần như chắc chắn là quá mức, và theo tôi, là một lời khuyên khủng khiếp để đưa ra mà không có cảnh báo cụ thể về nó Chỉ cần killcó lẽ sẽ làm các trick, và thực sự, vấn đề cơ bản trong câu hỏi này, tôi nghĩ, rằng họ đang cố gắng để tái chạy một máy chủ hơn và hơn nữa, vì vậy đây chỉ là một hack, không phải là một sửa chữa. Họ cần hiểu rõ hơn về những gì đang diễn ra, mà câu trả lời này không thực sự cung cấp.
lindes

15

Một điều khác có thể gây ra lỗi này, là hai máy chủ HTTP trong cùng một mã nút. Tôi đã cập nhật một số mã Express 2 thành Express 3 và đã có ...

http.createServer(app).listen(app.get('port'), function(){            
  console.log('Express server listening on port ' + app.get('port')); 
});        

// tons of shit.

http.createServer(app).listen(app.get('port'), function(){            
  console.log('Express server listening on port ' + app.get('port')); 
});                                                                   

Và, nó đã gây ra lỗi này.


14

Điều này làm việc cho tôi (Tôi đang sử dụng mac). Chạy lệnh này

lsof -PiTCP -sTCP:LISTEN

Điều này sẽ hiển thị một danh sách các cổng mà syetem của bạn đang sử dụng. Tìm nút PIDmà bạn đang chạy

COMMAND     PID          USER   FD   TYPE             DEVICE SIZE/OFF NODE NAME
node      17269 hientrq   16u  IPv6 0xc42959c6fa30c3b9      0t0  TCP *:51524 (LISTEN)
node      17269 hientrq   19u  IPv4 0xc42959c71ae86fc1      0t0  TCP localhost:1337 (LISTEN)

và chạy kill -9 [YOUR_PID]


11

EADDRINUSEcó nghĩa là cổng (mà chúng tôi cố gắng lắng nghe trong ứng dụng nút) đã được sử dụng. Để khắc phục, chúng ta cần xác định quá trình nào đang chạy với cổng đó.

Ví dụ: nếu chúng tôi đang cố gắng lắng nghe ứng dụng nút của chúng tôi trong 3000 cổng. Chúng ta cần kiểm tra xem cổng đó đã được sử dụng bởi bất kỳ quy trình nào khác chưa.

bước 1:

$sudo netstat -plunt |grep :3000

Đó là lệnh trên cho kết quả dưới đây.

tcp6       0      0 :::3000                 :::*                    LISTEN      25315/node

bước 2:

Bây giờ bạn đã có ID tiến trình (25315), Giết quá trình đó.

kill -9 25315

bước 3:

npm run start

Lưu ý: Giải pháp này cho người dùng linux.


9
lsof -i:3000;
kill -9 $(lsof -t -i:3000);
// 3000 is a your port
// This "lsof -i:3000;" command will show PID 
kill PID 
ex: kill 129393

3
Vui lòng thêm nhiều ngữ cảnh vào câu trả lời của bạn để giúp người đọc trong tương lai hiểu mã / lệnh.
Milo

8

sudo giết $ (sudo lsof -t -i: 80)

cho lực lượng tiêu diệt

sudo kill -9 $ (sudo lsof -t -i: 80)

sử dụng cmd ở trên để giết cổng cụ thể và sau đó chạy máy chủ của bạn


8

Hãy thử cả hai lệnh và nó sẽ dừng tất cả quá trình nút.

killall 9 node
pkill node
npm start 

1
hack này đã giúp tôi, tiết kiệm nhiều thời gian cảm ơn
Anoop PS

5

Lỗi này xuất hiện khi bạn có bất kỳ quy trình nào đang chạy trên một cổng mà bạn muốn chạy ứng dụng của mình.

Làm thế nào để có được quá trình đang chạy trên cổng đó => lệnh: sudo netstat -ap | grep: 3000

đầu ra: bạn sẽ nhận được thông tin quy trình đang sử dụng cổng đó

tcp 0 0 IPaddress: 3000 : LISTEN 26869 / nút

Bây giờ bạn có thể giết quá trình đó sudo kill -9 26869


Đã kiểm tra tất cả các câu trả lời. Nhưng bạn giải quyết vấn đề của tôi.
Raul


5

EADDRINUSE có nghĩa là cổng của ứng dụng nodejs của bạn đã được sử dụng.

  • Bây giờ bạn đã giết tiến trình / ứng dụng đang chạy trên cổng đó.
  • Tìm id quá trình của ứng dụng bằng cách:

lsof -i tcp: 3000

  • Bây giờ bạn sẽ nhận được id quá trình từ này.
  • Chạy cái này:

giết -9 tiến trình


4

Có một cách để chấm dứt quá trình sử dụng Trình quản lý tác vụ:

Lưu ý rằng giải pháp này chỉ dành cho Windows

  1. Chuyển đến Trình quản lý tác vụ (hoặc sử dụng phím tắt Ctrl+ Shift+ Esc)

  2. Trên "Các quy trình nền", tìm các quy trình "Node.js" và chấm dứt chúng (Nhấp chuột phải vào chúng và chọn "Kết thúc tác vụ")

nhập mô tả hình ảnh ở đây

  1. Bây giờ bạn có thể bắt đầu lại

Đối với người dùng mac: 1. Khởi chạy 'Trình giám sát hoạt động' 2. Tìm kiếm 'nút' trong thanh tìm kiếm ở trên cùng bên phải. 3. Nhấp đúp chuột vào quá trình nút và thoát. Bạn đã sẵn sàng !!!! Chúc mừng mã hóa.
Apogee

3

Tôi đã thấy lỗi này trước đây (trong nút) với http.client và khi tôi nhớ lại, vấn đề phải làm là không khởi tạo httpClient hoặc đặt các tùy chọn xấu trong việc tạo httpClient và / hoặc trong yêu cầu url.


3

Tôi cũng có vấn đề tương tự, và tôi chỉ cần đóng thiết bị đầu cuối và mở một thiết bị đầu cuối mới và chạy

node server.js

lần nữa. Điều đó làm việc cho tôi, đôi khi chỉ cần chờ vài giây cho đến khi nó hoạt động trở lại.

Nhưng điều này chỉ hoạt động trên một máy phát triển thay vì bảng điều khiển máy chủ ..


3

Lỗi: nghe EADDRINUSE có nghĩa là cổng mà bạn muốn gán / liên kết với máy chủ ứng dụng của bạn đã được sử dụng. Bạn có thể gán một cổng khác cho ứng dụng của mình.

Hoặc nếu bạn muốn gán cùng một cổng cho ứng dụng. Sau đó, giết ứng dụng đang chạy ở cổng mong muốn của bạn.

Đối với một ứng dụng nút, những gì bạn có thể thử là, tìm id quá trình cho ứng dụng nút bằng cách:

ps -aux | grep node

Sau khi nhận được id quá trình, hãy làm

kill process_id

-aux trên windows 10?
Tom Stickel

Không -aux là dành cho các hệ thống dựa trên linux. Đối với các hệ thống dựa trên windows, bạn có thể tra cứu hệ thống cho quá trình nút mong muốn và kết thúc nó.
Parth Vyas

2

Trên Debian tôi phát hiện ra để chạy trên cổng 80, bạn cần phát lệnh dưới dạng root tức là

sudo node app.js

Tôi hy vọng nó sẽ giúp


2

Trong trường hợp của tôi, Apache HTTP Server được chạy trên cổng 80, tôi đã giải quyết nó bằng cách phát lệnh dưới dạng root

sudo killall httpd

Cập nhật

Nếu Jenkin được cài đặt và chạy trên máy Mac của bạn;

  1. Bạn có thể kiểm tra nó với sudo lsof -i tcp:8080
  2. Nếu Có và bạn chỉ muốn dừng Jenkins một lần, hãy chạy: sudo launchctl unload /Library/LaunchDaemons/org.jenkins-ci.plist

2

Có vẻ như có một quá trình phục vụ Node ng đang chạy. Kiểm tra nó bằng cách gõ cái này trong bảng điều khiển của bạn (Linux / Mac):

ps aux|grep node

và bỏ nó với:

kill -9 <NodeProcessId>

HOẶC sử dụng xenativley

ng serve --port <AnotherFreePortNumber>

để phục vụ dự án của bạn trên một cổng miễn phí của sự lựa chọn của bạn.


1

Trong khi tiêu diệt NODE_PORT, nó có thể giết quá trình chrome của bạn hoặc bất cứ thứ gì đang nghe cùng một cổng và điều đó thật khó chịu.

Kịch bản shell này có thể hữu ích - trong trường hợp của tôi, cổng là 1337 nhưng bạn có thể thay đổi nó bất cứ lúc nào

# LOGIC

CHROME_PIDS=`pidof chrome`
PORT_PIDS=`lsof -t -i tcp:1337`

for pid in $PORT_PIDS
do

if [[ ${CHROME_PIDS} != *$pid* ]];then

    # NOT FOUND IN CHROME PIDS

    echo "Killing $pid..."
    ps -p "$pid"

    kill -kill "$pid"
    fi

done

sails lift
# OR 'node app' OR whatever that starts your node

exit

1

Trong trường hợp của tôi, tôi sử dụng một máy chủ lưu trữ web nhưng nó cũng giống như vậy trong máy chủ lưu trữ cục bộ, tôi đã sử dụng:

ps -aef | grep 'node' 

để xem quá trình nút sau đó, bàn điều khiển hiển thị quá trình với PID. để tiêu diệt quá trình bạn phải sử dụng lệnh này:

kill -9 PID

Trong đó PID là id quá trình từ lệnh trên.


1

Hai máy chủ không thể nghe trên cùng một cổng, vì vậy hãy kiểm tra xem máy chủ khác có nghe trên cùng một cổng không, cũng kiểm tra đồng bộ hóa trình duyệt nếu nó chạy trên cùng một cổng


1

Đối với những người khác trên windows 10 có nút như localhostvà chạy trên một cổng như 3500, không phải 80 ...

Những gì không hoạt động:

killall    ?  command not found
ps -aux | grep 'node'     ?     ps:  user x unknown 

Những gì hiển thị thông tin nhưng vẫn không hoạt động:

 ps -aef | grep 'node'
 ps ax
 kill -9 61864

Làm gì

Git Bash hoặc Powershell trên Windows

  net -a -o | grep 3500   (whatever port you are looking for) 

Lưu ý rằng PID (ngoài cùng bên phải)
Tôi không thể killalllàm việc ... vì vậy

  1. Mở trình quản lý tác vụ của bạn
  2. Trên tab quy trình, nhấp chuột phải vào Tên hoặc bất kỳ cột nào và chọn để bao gồm PID
  3. Sắp xếp theo PID, sau đó nhấp chuột phải vào PID phải và nhấp vào kết thúc tác vụ.

Bây giờ sau đó không phải là bài tập thú vị trên windows, tôi nhận ra rằng tôi có thể sử dụng trình quản lý tác vụ và tìm công cụ Node và kết thúc nó.

FYI, tôi đã sử dụng Visual Studio Code để chạy Node trên cổng 3500 và tôi sử dụng shell Git Bash bên trong mã VS. Tôi đã thoát ra một cách duyên dáng với Ctrl + C, nhưng đôi khi điều này không giết được nó. Tôi không muốn thay đổi cổng của mình hoặc khởi động lại để điều này hoạt động. Hy vọng nó sẽ giúp người khác. Nếu không thì nó là tài liệu cho bản thân tôi.


1

Đối với cửa sổ, người dùng thực thi lệnh sau trong cửa sổ PowerShell để hủy tất cả các quy trình nút.

Stop-Process -processname node

1

Tùy chọn phù hợp với tôi:

Chạy:

ps -ax | grep node

Bạn sẽ nhận được một cái gì đó như:

 8078 pts/7    Tl     0:01 node server.js
 8489 pts/10   S+     0:00 grep --color=auto node    
 kill -9 8078
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.