Reagieren Sie darauf, dass der native ERROR Packager Port 8081 nicht überwachen kann


83

Wenn ich einen Befehl ausführe react-native start, wird er angezeigt Packager can't listen on port 8081.

Ich weiß, dass es um Software geht, die meinen Port 8081 verwendet.

Ich benutze Resource Monitor, um den Port zu sehen, aber ich kann 8081 nicht finden, es gibt keine 8081

Kann mir jemand zeigen, wie ich es finde?

Geben Sie hier die Bildbeschreibung ein


1
Schauen Sie sich diesen Beitrag an , Sie sollten ihn finden.
Antoine Grandchamp

Stellen Sie zusätzlich zu den anderen Antworten sicher, dass der Metro-Bundler nicht bereits in einem längst vergessenen Terminalfenster ausgeführt wird.
Lurifaxel

Antworten:


108

Sie können den Packager an einem anderen Port ausführen.

$ react-native start --port=8088

Alternativ können Sie herausfinden, welche Ports unter Windows mit netstat verwendet werden.

$ netstat -a -b -o

Netstat gibt Ihnen eine PID, mit der Sie den Prozess abbrechen können.

$ taskkill /pid 1234

145

Führen Sie auf einem Mac den folgenden Befehl aus, um die ID des Prozesses zu ermitteln, der den Port verwendet. Führen Sie dann den folgenden Befehl aus, um den Prozess 8081
sudo lsof -i :8081
zu beenden:
kill -9 23583

So wird es aussehen Geben Sie hier die Bildbeschreibung ein


3
Funktioniert auch auf Ubuntu 18.04
theapache64

Arbeitete auch für mich auf MacOS High Sierra
Liran H

31

Dieser Fehler tritt auf, weil bereits ein Prozess auf dem 8081-Port ausgeführt wird. Stoppen Sie diesen Prozess und führen Sie dann Ihren Befehl aus. Es wird Ihr Code ausgeführt. Für diese erste Liste alle Prozesse, die diesen Port verwenden, durch Eingabe

lsof -i :8081  

Dieser Befehl listet die Prozess-ID (PID) des Prozesses auf und beendet dann den Knotenprozess mithilfe von

kill -9 <PID>  

Hier ist PID die Prozess-ID des Knotenprozesses.


19

Dieses Bild zeigt tatsächlich, dass Ihr 8081 nicht verwendet wird. Wenn die oben genannten Vorschläge nicht geholfen haben und Ihr Mobilgerät über USB mit Ihrem Computer verbunden ist (und Sie Android 5.0 (Lollipop) oder höher haben), können Sie Folgendes versuchen:

$ adb reconnect

Dies ist in den meisten Fällen nicht erforderlich, aber nur für den Fall, lassen Sie uns Ihre Verbindung mit Ihrem Handy zurücksetzen und den ADB-Server neu starten. Schließlich:

$ adb reverse tcp:8081 tcp:8081

Wenn Ihr mobiles Gerät versucht, auf einen Port 8081 selbst zuzugreifen, wird es an den 8081-Port Ihres PCs weitergeleitet.

Oder man könnte es versuchen

$ killall node

8

Ubuntu / Unix && MacOS

Mein Metro Bundler steckte fest und es wurden viele Knotenprozesse ausgeführt, aber ich hatte keine andere Entwicklung als reag-native, also lief ich:

$ killall -9 node

Der Metro Bundler läuft standardmäßig über den Knoten auf Port 8081 und kann manchmal auf Probleme stoßen, bei denen er hängen bleibt (normalerweise durch schnelles Drücken von CTRL+ Smit eingeschaltetem Hot-Reload). Wenn Sie CTRL+ drücken C, um den react-native run-androidVorgang abzubrechen, haben Sie plötzlich eine schlechte Zeit, weil Sie react-native-run-androidnicht weiterkommen:

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

Fix:

$ killall -9 node

$ react-native run-android

Hinweis: Wenn Sie gerade andere Apps entwickeln, kann das Beenden aller Knotenprozesse diese oder alle von Ihnen ausgeführten knotenbasierten Dienste unterbrechen. Denken Sie also an die umfassende Natur von killall -9. Wenn Sie keine knotenbasierte Datenbank oder App ausführen oder es Ihnen nichts ausmacht, sie manuell neu zu starten, sollten Sie bereit sein.

Der Grund, warum ich diese detaillierte Antwort auf diese halb unabhängige Frage hinterlasse, ist, dass meine eine Lösung für ein häufiges halb verwandtes Problem ist, für dessen Behebung leider zwei Schritte erforderlich sind, zum Glück jedoch nur zwei Schritte erforderlich sind, um wieder an die Arbeit zu gehen.

Wenn Sie den Metro Bundler-Müll an Port 8081 chirurgisch entfernen möchten, führen Sie die folgenden Schritte in der Antwort von RC_02 aus :

$ sudo lsof -i :8081

$ kill -9 23583

(wobei 23583 die Prozess-ID ist)


6

Nimm das Terminal und tippe

fuser 8081/tcp

Sie erhalten eine Prozess-ID, die Port 8081 verwendet. Beenden Sie nun den Prozess

kill <pid>

3

Sie sollten alle Prozesse beenden, die auf Port 8081 ausgeführt werden kill -9 $(lsof -i:8081)


2

Überprüfen Sie, ob auf Ihrem Computer bereits ein Knotenserver ausgeführt wird, und schließen Sie ihn.


2

Versuchen Sie, in einem anderen Port wie 3131 auszuführen. Führen Sie den folgenden Befehl aus:

react-native run-android --port=3131

McAfee verwendet diesen Port in meinem Fall. Wie bereits erwähnt, hilft es, in einem anderen Port zu laufen.
Muthu

1

Dies kann daran liegen, dass McAfee diesen Port verwendet. Wenn Sie einfach lsof -i 8081vorgehen, wird die Anwendung möglicherweise nicht angezeigt, und Sie müssen sie möglicherweise sudo.

Tun sudo lsof -i 8081und wenn dieser Befehl eine Ausgabe liefert, können Sie ihn mit beenden sudo launchctl remove com.mcafee.agent.macmn. Starten Sie danach den Packager erneut.


1

In meinem Fall ist das Internet am Emulator ausgefallen, da am Emulator kein WLAN-Signal vorhanden ist. Das Zurücksetzen des Emulators hat funktioniert.


0

Um dieses Problem zu beheben, habe ich den folgenden Prozess ausgeführt.

Bitte brechen Sie den aktuellen Prozess von "React-Native Run-Android" mit STRG + C oder CMD + C ab

Schließen Sie die Befehlszeile des Metro Bundler (Terminal) -Fensters, die automatisch geöffnet wird.

Führen Sie den Befehl erneut auf dem Terminal „React-Native Run-Android


0

Gehen Sie zunächst in Ihrem Gerät zu Dev. Option -> ADB über Netzwerk danach:

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

(oder übrigens Run-Ios)

Wenn dies erfolgreich war, hat Ihr Gerät app-debug.apk installiert, öffnen Sie app-debug und gehen Sie zu Dev. Einstellungen -> Server-Host und -Port für Gerät debuggen , geben Sie die IP-Adresse Ihres Computers ein (im Allgemeinen Systemeinstellung -> Netzwerk ), wie im folgenden Beispiel < IP-Adresse Ihres Computers > : 8081 (ohne Ungleichung)

Führen Sie abschließend den folgenden Befehl aus

$ react-native start --port=8081

Versuchen Sie es mit einem anderen Port, und stellen Sie sicher, dass sich Ihr Computer und Ihr Gerät im selben Netzwerk befinden.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.