React native ERROR Packager không thể nghe trên cổng 8081


84

Khi tôi chạy lệnh react-native start, nó sẽ hiển thị Packager can't listen on port 8081.

Tôi biết sự cố là về phần mềm sử dụng cổng 8081 của tôi.

Tôi sử dụng Resource Monitor để xem cổng, nhưng tôi không thể tìm thấy 8081, không có 8081

Ai đó có thể chỉ cho tôi cách tìm nó không?

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


1
Hãy xem bài viết này , bạn sẽ tìm thấy nó.
Antoine Grandchamp

Ngoài các câu trả lời khác, hãy đảm bảo gói Metro chưa chạy trong một số cửa sổ thiết bị đầu cuối bị lãng quên từ lâu.
Lurifaxel

Câu trả lời:


108

Bạn có thể chạy trình đóng gói trên một cổng khác.

$ react-native start --port=8088

Ngoài ra, hãy tìm hiểu những gì đang sử dụng cổng nào trên Windows với netstat.

$ netstat -a -b -o

Netstat cung cấp cho bạn một PID, bạn có thể sử dụng PID này để kết thúc quá trình.

$ taskkill /pid 1234

146

Trên máy mac, hãy chạy lệnh sau để tìm id của quá trình đang sử dụng cổng 8081
sudo lsof -i :8081
Sau đó chạy lệnh sau để kết thúc quá trình:
kill -9 23583

Đây là cách nó sẽ như thế nào nhập mô tả hình ảnh ở đây


4
Cũng hoạt động trên ubuntu 18.04
theapache64

1
Cũng làm việc cho tôi, trên MacOS High Sierra
Liran H

1
Nice tốt đẹp tốt đẹp rất tốt đẹp, cảm ơn bạn.
Jeaf Gilbert

31

Lỗi này sắp xảy ra do một số quá trình đã chạy trên cổng 8081. Dừng quá trình đó và sau đó chạy lệnh của bạn, nó sẽ chạy mã của bạn. Đối với danh sách đầu tiên này, tất cả quá trình đang sử dụng cổng này bằng cách gõ

lsof -i :8081  

Lệnh này sẽ liệt kê id quy trình (PID) của quy trình và sau đó kết thúc quy trình nút bằng cách sử dụng

kill -9 <PID>  

Ở đây PID là id tiến trình của tiến trình nút.


19

Hình ảnh đó thực sự cho thấy rằng 8081 của bạn không được sử dụng. Nếu các đề xuất ở trên không hữu ích và thiết bị di động của bạn được kết nối với máy tính qua usb (và bạn có Android 5.0 (Lollipop) trở lên), bạn có thể thử:

$ adb reconnect

Điều này là không cần thiết trong hầu hết các trường hợp, nhưng chỉ trong trường hợp, hãy đặt lại kết nối với thiết bị di động của bạn và khởi động lại máy chủ adb. Cuối cùng:

$ adb reverse tcp:8081 tcp:8081

Vì vậy, bất cứ khi nào thiết bị di động của bạn cố gắng truy cập bất kỳ cổng nào 8081, nó sẽ được chuyển đến cổng 8081 trên PC của bạn.

Hoặc, người ta có thể thử

$ killall node

9

Ubuntu / Unix && MacOS

Metro Bundler của tôi đã bị kẹt và có rất nhiều quy trình nút đang chạy nhưng tôi không có bất kỳ sự phát triển nào khác đang diễn ra ngoài phản ứng gốc, vì vậy tôi đã chạy:

$ killall -9 node

Metro Bundler đang chạy qua nút trên cổng 8081 theo mặc định và đôi khi nó có thể gặp sự cố do đó bị kẹt (thường là do nhấn CTRL+ Sliên tiếp nhanh khi bật tải lại nóng). Nếu bạn nhấn CTRL+ Cđể kết thúc react-native run-androidquá trình, bạn sẽ đột nhiên gặp khó khăn vì react-native-run-androidsẽ bị kẹt trên:

Scanning folders for symlinks in /home/poop/dev/some-app/node_modules (41ms)

Sửa chữa:

$ killall -9 node

$ react-native run-android

Lưu ý: nếu bạn đang phát triển các ứng dụng khác vào thời điểm đó, việc giết tất cả các proceses của nút có thể làm gián đoạn chúng hoặc bất kỳ dịch vụ dựa trên nút nào mà bạn đang chạy, vì vậy hãy lưu ý đến bản chất sâu rộng của nó killall -9. Nếu bạn không chạy cơ sở dữ liệu hoặc ứng dụng dựa trên nút hoặc bạn không ngại khởi động lại chúng theo cách thủ công, thì bạn nên bắt đầu.

Lý do tôi để lại câu trả lời chi tiết này cho câu hỏi bán không liên quan này là vì tôi là một giải pháp cho một vấn đề liên quan đến bán phổ biến mà đáng buồn là cần 2 bước để sửa chữa nhưng may mắn là chỉ cần 2 bước là trở lại hoạt động.

Nếu bạn muốn loại bỏ chính xác rác Metro Bundler trên cổng 8081, hãy thực hiện các bước trong câu trả lời từ RC_02 , đó là:

$ sudo lsof -i :8081

$ kill -9 23583

(trong đó 23583 là ID quy trình)


6

Lấy thiết bị đầu cuối và nhập

fuser 8081/tcp

Bạn sẽ nhận được một id Quy trình đang sử dụng cổng 8081 Bây giờ hãy giết quy trình

kill <pid>

3

Bạn nên tắt tất cả các quy trình đang chạy trên cổng 8081 bằng cách kill -9 $(lsof -i:8081)


2

Kiểm tra xem đã có máy chủ Node nào đang chạy trên máy của bạn chưa rồi đóng nó lại.


2

Cố gắng chạy trong một cổng khác như 3131. Chạy lệnh:

react-native run-android --port=3131

McAfee đang sử dụng cổng này trong trường hợp của tôi. Như đã đề cập, chạy ở các cổng khác nhau sẽ giúp ích.
Muthu

1

Điều này có thể là do McAfee sử dụng cổng đó. Làm đơn giản lsof -i 8081có thể không hiển thị ứng dụng và bạn có thể phải làm điều đó.

Thực hiện sudo lsof -i 8081và nếu lệnh này cho kết quả đầu ra, bạn có thể tắt nó bằng cách sử dụng sudo launchctl remove com.mcafee.agent.macmn. Sau khi bắt đầu đóng gói lại.


1

trong trường hợp của tôi, internet trên trình mô phỏng bị gián đoạn vì không có tín hiệu wifi trên trình mô phỏng. Đặt lại trình giả lập đã hoạt động.


0

Để khắc phục sự cố này, quy trình tôi đã đề cập bên dưới.

Vui lòng hủy quy trình hiện tại của “react-native run-android” bằng CTRL + C hoặc CMD + C

Đóng dòng lệnh cửa sổ gói metro (thiết bị đầu cuối) được mở tự động.

Chạy lại lệnh trên thiết bị đầu cuối, “react-native run-android


0

Trước hết, trong thiết bị của bạn, hãy chuyển đến Dev. Tùy chọn -> ADB qua Mạng sau khi thực hiện:

$ adb connect <your device adb network>
$ react-native run-android 

(hoặc run-ios, nhân tiện)

nếu điều này thành công, thiết bị của bạn đã cài đặt app-debug.apk, hãy mở app-debug và chuyển đến Dev. Cài đặt -> Gỡ lỗi máy chủ lưu trữ và cổng cho thiết bị , nhập địa chỉ IP của máy (nói chung là Tùy chọn hệ thống -> Mạng ), như trong ví dụ dưới đây < địa chỉ IP máy của bạn > : 8081 (không có sự bất bình đẳng)

cuối cùng, thực hiện lệnh dưới đây

$ react-native start --port=8081

thử các cổng khác và xác minh rằng máy của bạn và thiết bị của bạn là cùng một mạng.

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.