Ich versuche, die Create-React-native-App auf der Expo-App in Android auszuführen.
Erstens habe ich das Projekt durch Schreiben des Befehls erstellt
create-React-native-App-Test
dann habe ich ausgeführt
npm starten
scannte dann den qr-Code aus der expo-app.
Nach dem Scannen des QR-Codes erhalte ich folgenden Fehler:
Uncaught Error: Java.net,sockettimeoutException: failed to connect to after 10000ms
Github Ausgabe:
https://github.com/react-community/create-react-native-app/issues/144#issuecomment-296631692
Dies liegt daran, dass der Port Ihres Computers nicht geöffnet ist.
In Ubuntu Run In Terminal
Sudo ufw status verbose
Um den offenen Port anzuzeigen, müssen Sie den Port mit öffnen, wenn Sie 19000 Port Open nicht finden
Sudo ufw allow 19000/tcp
und dann nochmal rennen
Sudo ufw allow 19001/tcp
um http für die native Reaktion zu dienen, löse ich dieses Problem in meinem Ubuntu mit dieser Methode. Ich hoffe, dies wird dir helfen.
So öffnen Sie einen Port in der Windows-Firewall für den Zugriff auf TCP) Klicken Sie im Menü Start auf Run
, und geben Sie Folgendes ein: - WF.msc
, und klicken Sie dann auf OK
.
Klicken Sie in der Windows-Firewall mit erweiterter Sicherheit im linker Bereich mit der rechten Maustaste auf eingehende Regeln, und klicken Sie dann auf New Rule
im Aktionsbereich.
Wählen Sie im Dialogfeld RegeltypPort aus, und klicken Sie dann auf Weiter.
Wählen Sie im Dialogfeld Protokoll und Ports die Option TCP . Wählen Sie Bestimmte lokale Ports und geben Sie dann die Portnummer der Instanz des React Port, z. B. 190 für die Standardinstanz. Klicken Sie auf Weiter.
Wählen Sie im Dialogfeld AktionVerbindung zulassen aus, und klicken Sie dann auf Weiter.
Wählen Sie im Dialogfeld Profil alle Profile aus, die die Computerverbindungsumgebung beschreiben, wenn Sie eine Verbindung zum Datenbankmodul herstellen möchten, und klicken Sie dann auf Weiter.
Geben Sie im Dialogfeld Name einen Namen und eine Beschreibung für diese Regel ein und dann klicken Sie auf Fertig stellen.
Ebenso können Sie port 19001 auch öffnen.
In meinem Fall haben die Firewall-Einstellungen alleine dies nicht getan. Mein Problem war, dass VirtualBox-Netzwerkgeräte Priorität hatten und der Expo-Host auf einem falschen Netzwerk gestartet wurde.
Unter Windows können Sie ipconfig
ausführen und Ihre Netzwerkadapter anzeigen. npm
yarn start
scheint das zu übernehmen, was zuerst in dieser Liste angezeigt wird.
Ich habe dies hier erfahren: https://github.com/react-community/create-react-native-app/issues/60
Wenn Sie die anderen Netzwerkadapter nicht in der Liste benötigen, können Sie sie in der Netzwerkverbindungsoberfläche der Systemsteuerung deaktivieren.
Wenn Sie diese Verbindungen verwenden müssen, müssen _/und Expo-Arbeit haben, um das Problem zu lösen, dem ich folgte diesen Prozess :
- Gehen Sie zu Systemsteuerung> Netzwerk und Internet> Netzwerkverbindungen
- Klicken Sie mit der rechten Maustaste auf die gewünschte Verbindung (Verbindung mit höherer Priorität).
- Klicken Sie auf Eigenschaften> Internetprotokoll Version 4
- Klicken Sie auf Eigenschaften> Erweitert
- Deaktivieren Sie "Automatische Metrik".
- Geben Sie 10 in 'Interface Metric' ein.
- OK klicken
Wiederholen Sie den Vorgang für die Verbindung mit niedrigerer Priorität, setzen Sie jedoch dieses Mal 20 in die "Schnittstellenmetrik".
Sie verwenden jetzt die Verbindung mit höherer Priorität als Standard.
Sie können dies umgehen, indem Sie die IP-Adresse Ihres Laptops auf eine statische IP-Adresse festlegen, beispielsweise 192.168.1.69. Anschließend müssen Sie die reaktive Packager-IP-Adresse in dieselbe IP-Adresse wie Ihr Laptop ändern
set REACT_NATIVE_PACKAGER_HOSTNAME=192.168.1.69 (Windows)
REACT_NATIVE_PACKAGER_HOSTNAME=192.168.1.69 (Mac & Linux)
starten Sie Ihr Projekt erneut und Sie können loslegen.
Deaktivieren Sie zunächst die nicht verwendete Netzwerkverbindung. In meinem Fall war es VirtualBox. Vielleicht benutzt es den gleichen Port. Ich bin mir darüber nicht sicher. Starten Sie nach dem Deaktivieren der nicht verwendeten Verbindungen den Packager erneut. Wenn Sie npm verwendet haben, geben Sie bitte ein
npm start
Ich schlage vor, Sie installieren eine Expo-Anwendung für native React. Link zu offiziellen Leitfaden hier
npm install -g exp
Anschließend können Sie die Genymotion-Software verwenden, um verschiedene Umgebungseinstellungen für Ihre App zu emulieren und auszuführen:
exp start
Wenn Sie im Terminal "npm start" mit native reagieren, ist folgendes für Sie. Ich fand heraus, dass die IpV-Adressen meines Computers, wenn meine Anwendung erfolgreich ausgeführt wird, die im Terminal angezeigt werden und die sich auf der Expo-App befinden, beispielsweise identisch sind:
ipconfig -> IPv4 Address. . . . . . . . . . . : 10.0.0.124
exp://10.0.0.124:19000
Basierend auf dieser Beobachtung habe ich dieses Problem folgendermaßen gelöst:
Finden Sie Ihre IP, indem Sie den Befehl im Terminal ausführen:
ipconfig
Führen Sie den Befehl in der NodeJS-Eingabeaufforderung mit Ihrer IP aus (zum Beispiel 10.0.0.124).
set REACT_NATIVE_PACKAGER_HOSTNAME=10.0.0.124
Expo-App starten, Barcode scannen
npm start
Wenn dies nicht hilft, führen Sie die nächsten Schritte aus, die von React-Entwicklern empfohlen werden, zusätzlich zu anderen sinnvollen Anstrengungen:
Ich hatte alles, was im Kontext erwähnt wurde, getan. Nur mein verbundenes WLAN-Netzwerk wurde von öffentlich zu privat geändert
in Windows
führen Sie die ipconfig
in der Eingabeaufforderung aus
holen Sie sich die IP4-Adresse und kopieren Sie sie.
Dann gehe zu
REACT_NATIVE_PACKAGER_HOSTNAME
dann den npm start
.__ ausführen
Wenn Sie git bash für die Entwicklung verwenden, hilft diese Lösung von Icruz4
Anstatt
set REACT_NATIVE_PACKAGER_HOSTNAME
Benutzen:
export REACT_NATIVE_PACKAGER_HOSTNAME='192.168.1.123'
Hinweis:
Wenn du rennst
npm start
Expo informiert Sie in der Ausgabe über die verwendete IP-Adresse. Wenn diese IP nicht die IP ist, die Sie wollen, dann die
REACT_NATIVE_PACKAGER_HOSTNAME
umgebungsvariable ist nicht richtig gesetzt
Wenn Sie alles versucht haben, was die anderen Antworten vorschlagen, und es immer noch nicht funktioniert, überprüfen Sie bitte auch, ob Ihr Computer und Ihr Telefon mit demselben WIFI-Netzwerk verbunden sind. Für mich hat das eine Stunde gekostet.
Ich hatte das gleiche Problem. Das Problem ist, dass der Befehl garne start oder npm start den ersten aktivierten Netzwerkadapter findet, den er findet, der zufällig der Adapter für VirtualBox auf meiner (und vielen anderen Maschinen) ist. Die Lösung ist entweder
setzen Sie die Umgebungsvariable REACT_NATIVE_PACKAGER_HOSTNAME manuell fest, oder deaktivieren Sie den nicht verwendeten Netzwerkadapter in der Windows-Netzwerkverbindung (siehe Abbildung) .__ Das Problem ist, dass Expo den ersten Netzwerkadapter und nicht den aktiven Netzwerkadapter findet, der die Internetverbindung bereitstellt.
Falls noch jemand nach der Antwort sucht. Machen Sie zunächst das Grundlegende: Deaktivieren Sie zunächst den VirtualBox Host-Only Network
, indem Sie Ihre Netzwerkkonfigurationen öffnen. Das hat bei mir funktioniert.
In meinem Fall trat dieses Problem auf, weil die Expo Android-App "über andere Apps"/Erlaubnis ziehen muss -/und ich habe es nicht gegeben. Also gebe ich diese Erlaubnis zur Expo-App und das Problem wurde gelöst.
Dieses Problem kann möglicherweise gelöst werden durch:
Setzen Sie Ihre Umgebungsvariable mit alternativen Anweisungen hier
Oder
Zuweisung der Schnittstellenmatrixpriorität für Ihre Netzwerkadapter mit detaillierten Anweisungen hier oder hier .
Oder
Ein Ubuntu-Rechner kann einen Port nicht öffnen
Nachdem Sie Änderungen vorgenommen haben, starten Sie den Computer neu, bevor Sie testen, ob er funktioniert.
Viel Glück!
Eine der einfachsten und zu 100% funktionierenden Lösungen ist:
Öffnen Sie dann ein Befehlsterminal und führen Sie Folgendes aus:
set REACT_NATIVE_PACKAGER_HOSTNAME=192.168.1.69 (Windows)
REACT_NATIVE_PACKAGER_HOSTNAME=192.168.1.69 (Mac & Linux)
Ich habe viele Lösungen ausprobiert, nur auf diese Weise konnte ich dieses Problem lösen:
Unter Windows:
Sudo exp start
Sie müssen nur den Port in der Windows-Firewall öffnen und alles sollte funktionieren.
1. Klicken Sie im Startmenü auf Ausführen, geben Sie WF.msc ein und klicken Sie auf OK.
Klicken Sie in der Windows-Firewall mit erweiterter Sicherheit im linken Bereich mit der rechten Maustaste auf Eingehende Regeln, und klicken Sie dann im Aktionsbereich auf Neue Regel.
Wählen Sie im Dialogfeld Regeltyp die Option Port aus, und klicken Sie dann auf Weiter.
Wählen Sie im Dialogfeld Protokoll und Ports die Option TCP aus. Wählen Sie Bestimmte lokale Ports aus, und geben Sie die Portnummer der Instanz des React-Ports ein, z. B. 19000 für die Standardinstanz. Weiter klicken.
Wählen Sie im Dialogfeld Aktion die Option Verbindung zulassen aus, und klicken Sie dann auf Weiter.
Wählen Sie im Dialogfeld Profil alle Profile aus, in denen die Verbindung der Computerverbindung beschrieben wird, wenn Sie eine Verbindung zum Database Engine (Datenbankmodul) herstellen möchten, und klicken Sie dann auf Weiter.
Geben Sie im Dialogfeld Name einen Namen und eine Beschreibung für diese Regel ein, und klicken Sie dann auf Fertig stellen.
Ebenso können Sie Port 19001 öffnen.
In Windows
set REACT_NATIVE_PACKAGER_HOSTNAME=my-ip-address
arbeitete in meinem Git Bash Terminal, aber nicht cmd. In git bash, nachdem ich npm start ausgeführt hatte, bekam ich ein Firewall-Popup, das ich angeklickt hatte und es funktionierte!