Làm cách nào để giải quyết “Lỗi: nghe EADDRINUSE: địa chỉ đã được sử dụng”?

Lam Cach Nao De Giai Quyet Loi Nghe Eaddrinuse Dia Chi Da Duoc Su Dung



Node.js là môi trường thời gian chạy cho phép mã được viết bằng ngôn ngữ JavaScript thực thi trên trang web hoặc máy chủ cục bộ. Đó là một môi trường đơn luồng và có tính chất không đồng bộ. Nó cung cấp nhiều mô-đun bên ngoài và tích hợp sẵn có thể được sử dụng để thực hiện các hoạt động khác nhau như gửi yêu cầu HTTP qua máy chủ. Trong khi tương tác với nhiều máy chủ cục bộ khác nhau, có khả năng gặp nhiều lỗi được giải quyết bằng cách làm theo các hướng dẫn cụ thể.

Hướng dẫn này giải thích các cách khắc phục có thể có đối với “nghe EADDRINUSE: địa chỉ đã được sử dụng” bằng cách bao gồm các phần bên dưới:

Làm cách nào để giải quyết “Lỗi: nghe EADDRINUSE: địa chỉ đã được sử dụng”?

Các ' Lỗi: nghe EADDRINUSE: địa chỉ đã được sử dụng ” phát sinh khi có nhiều ứng dụng hoặc tác vụ cố gắng truy cập vào cùng một cổng. Lỗi này có thể xảy ra trong giai đoạn thử nghiệm hoặc phát triển. Chẳng hạn, lỗi nêu trên sẽ được tạo ra để hiểu rõ hơn:







hằng số expressObj = yêu cầu ( 'thể hiện' )
hằng số ứng dụng demo = expressObj ( )
demoApp. lấy ( '/' , ( yêu cầu, độ phân giải ) => {
res. json ( {
tên : 'Bài viết Linuxhint về CORS' ,
ngôn ngữ : 'Node.js' ,
ứng dụng : 'corsApp' ,
nguồn gốc : 'Nguồn gốc chéo' ,
phần mềm trung gian : 'CORS'
} )
} )
demoApp. Nghe ( 8080 , ( ) => {
bảng điều khiển. nhật ký ( `Máy chủ đã khởi động 'http://localhost:8080/' ` )
} )
demoApp. Nghe ( 8080 , ( ) => {
bảng điều khiển. nhật ký ( `Máy chủ đã khởi động 'http://localhost:8080/' ` )
} )

Đoạn mã trên hoạt động như thế này:



  • Đầu tiên, nhập “ thể hiện ” mô-đun và lưu trữ đối tượng của nó trong một biến mới “ expressObj ”. Sử dụng biến này làm hàm tạo để tạo một ứng dụng express mới có tên “ ứng dụng demo ”.
  • Tiếp theo, tạo một yêu cầu GET bằng cách sử dụng “ lấy() ” và đặt trang chủ làm trình xử lý gốc bằng cách chuyển “ / ” làm tham số đầu tiên. Tham số thứ hai là một hàm gọi lại ẩn danh gửi “ JSON ” dữ liệu như một phản hồi bằng cách sử dụng “ json() ' phương pháp.
  • Sau đó, làm cho ứng dụng đó thực thi trên cùng số cổng của “ 8080 ' hai lần. Việc thực thi cùng một cổng hai lần sẽ tạo ra lỗi được đề cập.

Đầu ra được tạo ra sau khi biên dịch đoạn mã trên cho thấy sự xuất hiện của lỗi “Lỗi: nghe EADDRINUSE: địa chỉ đã được sử dụng”:







Chủ yếu có hai giải pháp để giải quyết lỗi xảy ra ở đầu ra trên đó là thay đổi số cổng hoặc dừng một trong các tiến trình đang chạy. Nhưng cũng có nhiều cách khắc phục khác gián tiếp giải quyết “ Lỗi: nghe EADDRINUSE: địa chỉ đã được sử dụng ' lỗi. Những giải pháp này cùng với các minh chứng thực tế được nêu dưới đây:

Giải pháp 1: Chạy quy trình trên các cổng khác nhau

Giải pháp được đề xuất nhiều nhất cho lỗi được đề cập là xác định số cổng mà cả hai dịch vụ đang chạy như trong trường hợp của chúng tôi là “ 8080 ”. Sau đó, chọn ngẫu nhiên một dịch vụ và sửa đổi số cổng của nó để làm cho các dịch vụ đó hoạt động trên localhost nhưng có số cổng khác. Mã của chúng tôi sau khi sửa đổi được thảo luận được hiển thị bên dưới:



hằng số expressObj = yêu cầu ( 'thể hiện' )
hằng số ứng dụng demo = expressObj ( )
demoApp. lấy ( '/' , ( yêu cầu, độ phân giải ) => {
res. json ( {
tên : 'Bài viết Linuxhint về CORS' ,
ngôn ngữ : 'Node.js' ,
ứng dụng : 'corsApp' ,
nguồn gốc : 'Nguồn gốc chéo' ,
phần mềm trung gian : 'CORS'
} )
} )
demoApp. Nghe ( 8080 , ( ) => {
bảng điều khiển. nhật ký ( `Máy chủ đã khởi động 'http://localhost:8080/' ` )
} )
demoApp. Nghe ( 3000 , ( ) => {
bảng điều khiển. nhật ký ( `Máy chủ đã khởi động 'http://localhost:8080/' ` )
} )

Đầu ra được tạo sau khi thực thi đoạn mã trên cho thấy bây giờ “ Lỗi: nghe EADDRINUSE: địa chỉ đã được sử dụng ' vấn đề đã được giải quyết:

Giải pháp 2: Dừng các tiến trình đang chạy trên cùng một cổng

Một cách khác để giải quyết lỗi “nghe EADDRINUSE: địa chỉ đã được sử dụng” là dừng các tiến trình đang chạy trên cổng cụ thể đang được sử dụng. Điều này sẽ làm cho cổng không hoạt động mà nhà phát triển có thể truy cập để thực hiện các tác vụ được chỉ định. Quá trình dừng này được thực hiện với sự trợ giúp của mô-đun bên ngoài có tên “ cổng giết ”.

Chẳng hạn, tất cả các tiến trình đang chạy trên số cổng được chỉ định “ 8080 ” sẽ bị giết bằng cách sử dụng “ cổng giết ” mô-đun. Có hai cách để sử dụng mô-đun “kill-port” và cả hai cách tiếp cận này đều được nêu dưới đây:

Phương pháp 1: Sử dụng mô-đun “kill-port” sau khi cài đặt

Các ' cổng giết ” mô-đun là mô-đun bên ngoài của bên thứ ba và để sử dụng mô-đun này bên trong dự án node.js. Mô-đun này cần được tải xuống trước bằng cách thực hiện lệnh dưới đây:

giết cài đặt npm - Hải cảng - g

Hình dưới đây cho thấy quá trình cài đặt hoàn tất cho “ cổng giết ' Biến đổi:

Sau khi cài đặt, người dùng có thể hủy dịch vụ đối với số cổng được yêu cầu. Trong trường hợp của chúng tôi, các dịch vụ của số cổng “ 8080 ” sẽ bị giết thông qua lệnh được nêu dưới đây:

giết - Hải cảng -- Hải cảng 8080

Đầu ra bên dưới xác nhận rằng tất cả các dịch vụ cho cổng “ 8080 ' đã bị giết:

Phương pháp 2: Sử dụng mô-đun “kill-port” mà không cần cài đặt

Các ' cổng giết ” có thể được sử dụng mà không cần trải qua quá trình cài đặt bằng cách sử dụng mô-đun “ npx ” Người chạy gói. Ví dụ, “ cổng giết ” đang được sử dụng để tiêu diệt hai cổng được chỉ định bằng cách sử dụng lệnh chạy gói “npx” được nêu bên dưới:

giết npx - Hải cảng 8080 9000

Đầu ra bên dưới cho thấy các dịch vụ dành cho các cổng được chỉ định “ 9000 ' Và ' 8080 ' đã bị giết:

Mẹo bổ sung: Gỡ cài đặt Mô-đun “kill-port”

Để gỡ cài đặt “ cổng giết ” mô-đun trên toàn cầu từ hệ thống thực hiện lệnh được nêu dưới đây:

npm gỡ cài đặt giết - Hải cảng - g

Giải pháp 3: Chấm dứt dịch vụ Node.js trên Windows

Nếu lỗi “Lỗi: nghe EADDRINUSE: địa chỉ đã được sử dụng” vẫn tồn tại thì hãy hủy tất cả đang chạy “ nút.js ” dịch vụ bằng cách sử dụng phương pháp GUI hoặc CLI.

Sử dụng phương pháp CLI

Nhấn nút “ Cửa sổ Nút ” để mở thanh tìm kiếm và nhập “ CMD ” bên trong hộp tìm kiếm, từ các kết quả được tạo ra. Sau đó, chọn mục “ Dấu nhắc lệnh ” ứng dụng và nhấn nút “ Chạy như quản trị viên ' cái nút:

Bằng cách chọn tùy chọn, một cửa sổ mới của Control Nhắc sẽ xuất hiện, để tắt các dịch vụ “node.js” hiện đang chạy trong nền, hãy thực hiện lệnh bên dưới:

nhiệm vụ tiêu diệt / F / Nút IM. exe

Đầu ra được tạo cho thấy các dịch vụ “node.js” đã bị chấm dứt:

Sử dụng phương pháp tiếp cận GUI

Để tắt các dịch vụ node.js đang chạy khỏi hệ thống, hãy mở “ Quản lý công việc ” bằng cách nhấn vào “ Ctrl + Shift + Esc ” chìa khóa ngay lập tức. Sau khi mở “Trình quản lý tác vụ”, hãy đi tới “ Chi tiết ” gõ, chọn “ nút.exe ” dịch vụ và nhấn vào “ Kết thúc nhiệm vụ Nút ” nằm ở hướng dưới cùng bên phải, như hiển thị bên dưới:

Đó là tất cả về việc giải quyết “Lỗi: nghe EADDRINUSE: địa chỉ đã được sử dụng” trong Node.js.

Phần kết luận

Lỗi “Lỗi: nghe EADDRINUSE: địa chỉ đã được sử dụng” phát sinh khi có nhiều dịch vụ cố gắng sử dụng một cổng cùng một lúc. Để giải quyết, người dùng nên thử sử dụng một số cổng khác hoặc tắt các dịch vụ đang chạy trên số cổng đã chỉ định bằng cách sử dụng lệnh “ cổng giết ” mô-đun. Nếu vẫn chưa khắc phục được lỗi, hãy kill tất cả đang chạy “ nút.js ” services từ trình quản lý tác vụ và khởi động lại ứng dụng của bạn. Hướng dẫn này đã minh họa các giải pháp khả thi để giải quyết vấn đề “Lỗi: nghe EADDRINUSE: địa chỉ đã được sử dụng”.