react-native run-android
Befehl wird beendet, indem eine Nachricht im Android Simulator hinterlassen wird. Die Nachricht lautet wie folgt:
Skript kann nicht geladen werden. Stellen Sie sicher, dass Sie entweder einen Metro-Server ausführen oder dass Ihr Bundle 'index.android.bundle' zur Veröffentlichung korrekt verpackt ist.
Was mache ich falsch?
reactjs
react-native
react-native-android
react-native-cli
metro-bundler
Belle Solutions
quelle
quelle
Antworten:
Sie haben den Bundler noch nicht gestartet. Führen Sie zuvor
npm start
oderreact-native start
im Stammverzeichnis Ihres Projekts ausreact-native run-android
.quelle
Diese Schritte helfen mir wirklich:
Schritt 1: Erstellen Sie ein Verzeichnis in Android / App / Src / Main / Assets
Linux-Befehl :
mkdir android/app/src/main/assets
Schritt 2: Umbenennen
index.android.js
(im Stammverzeichnis) inindex.js
( Möglicherweise gibt es eineindex.js
Datei, in der Sie sie nicht umbenennen müssen ) Führen Sie dann den folgenden Befehl aus:Schritt 3: Erstellen Sie Ihre APK:
react-native run-android
Bitte verwenden Sie index.js in der neuesten Version.
Genießen :)
quelle
index.js
Datei im Stammverzeichnis. In diesem Fall müssen Sie sie nicht umbenennenFür mich wurde dieser Fehler durch ein Upgrade von React-Native verursacht
Wenn Sie das Upgrade-Diff auschecken, müssen Sie ein Debug-Manifest erstellen
android/app/src/debug/AndroidManifest.xml
Weitere Informationen finden Sie unter: https://stackoverflow.com/a/50834600/1713216
https://react-native-community.github.io/upgrade-helper/
quelle
android:usesCleartextTraffic="true"
im Hauptfeld angeben,AndroidManifest.xml
ob dies funktioniert.Führen Sie zuerst die Schritte 4 und 5 aus, bevor Sie Ihr Projekt ausführen können. Wenn Sie das Ergebnis nicht erhalten (mit den Schritten 4 und 5), führen Sie die folgenden Schritte aus
1- Versuchen Sie, Ihre Node-Version herunterzustufen (aktuelle Version ist
12.13.1
)2- Fügen Sie den Pfad des npm-Moduls hinzu (
C:\Users\your user name\AppData\Roaming\npm
) zu Systemvariablen anstelle von Benutzervariablen hinzu3- Installieren Sie react native global mit dem Befehl
4- Gehen Sie zum Stammverzeichnis Ihres Projektverzeichnisses und führen Sie den folgenden Befehl aus:
5- Öffnen Sie ein anderes Terminal im Stammverzeichnis Ihres Projekts und führen Sie den folgenden Befehl aus:
EDIT:
Sie verwenden Genymotion? Wenn ja, führen Sie den folgenden Schritt aus:
Nach dem obigen Schritt, wenn Sie den folgenden Fehler erhalten?
Öffnen Sie Ihre Genymotion und gehen Sie zu:
genymotion menu -> Settings -> ADB -> Dann auswählenuse custom android sdk tools (klicken Sie auf Durchsuchen, um den SDK-Speicherort zu finden)
Führen Sie zum Schluss Ihr Projekt erneut aus.
quelle
Sie können Folgendes versuchen:
Fügen Sie diese Zeile in Ihre AndroidManifest.xml ein
quelle
Ein ähnliches Problem ist bei mir aufgetreten.
Anscheinend blockiert Mcafee den 8081-Port. Ich habe Stunden gebraucht, um das herauszufinden.
Versuchen Sie zu laufen:
Wenn die App mit einem Fehler im Emulator angezeigt wird, rufen Sie die Entwicklungseinstellungen ( Ctrl+ M) auf.
Ändern Sie den "Debug-Server-Host und -Port für das Gerät" in "localhost: 1234".
Schließen Sie die App und starten Sie sie in der App-Schublade.
quelle
Fügen Sie einfach drei Splash hinzu: node_modules \ metro-config \ src \ defaults \ blacklist.js
Ersetzen Sie diesen Teil:
quelle
Wenn Sie alles richtig konfiguriert haben, versuchen Sie Folgendes:
adb reverse tcp: 8081 tcp: 8081
Warum? "Wenn der RN-Packager ausgeführt wird, ist in Ihrem Browser unter 127.0.0.1:8081 ein aktiver Webserver verfügbar. Von diesem Server aus wird das JS-Bundle für Ihre Anwendung bereitgestellt und aktualisiert, wenn Sie Änderungen vornehmen. Ohne den Reverse-Proxy, Ihr Telefon kann keine Verbindung zu dieser Adresse herstellen. "
Alle Credits für Swingline0
quelle
[Schnelle Antwort]
Nachdem ich versucht hatte, dieses Problem in meinem Arbeitsbereich zu lösen, fand ich eine Lösung.
Dieser Fehler ist darauf zurückzuführen, dass bei der Verwendung einiger Kombinationen aus NPM- und Knotenversion bei Metro ein Problem auftritt.
Sie haben 2 Alternativen:
Alternative 2: Gehen Sie zu dieser Datei:
\node_modules\metro-config\src\defaults\blacklist.js
und ändern Sie diesen Code:und ändern Sie dies:
quelle
Dies funktionierte für mich, nachdem ich verschiedene Möglichkeiten ausprobiert hatte.
In der Datei
node_modules\metro-config\src\defaults\blacklist.js
Ersetzen:
mit:
hoffe das hilft.
quelle
metro-config
wird \ für Pfade anstelle von / verwendet, was in dieser Antwort geändert werden soll. Tu das nicht . Das Ändern von npm-Paketen bedeutet, dass Ihr gesamtes Team dies auf seinem Computer, in CI, im Staging, in der Produktion und jedes Mal tun muss, wenn metro-config ein Update veröffentlicht. Ein besserer Ansatz besteht darin, die Metro-Konfiguration auf GitHub zu teilen, einen Fix zu erstellen, einen PR zu pushen und einzureichen, um ihn für alle zu reparieren.Ab Android 9.0 (API-Level 28) ist die Klartextunterstützung standardmäßig deaktiviert.
Dies ist, was Sie tun müssen, um dieses Problem zu beseitigen, wenn Sie normale Ausführungsbefehle ordnungsgemäß ausführen
Und ändern Sie Ihre Android-Manifest-Datei wie folgt.
quelle
Nach Stunden auf der Suche nach einer Antwort. Die Lösung bestand darin, einen Downgrade-Knoten auf Version 12.4 zu erstellen.
In meinem Fall stelle ich fest, dass der Fehler nur in der Version React 0.60 mit der Knotenversion 12.6 auftritt.
quelle
Meine Lösung hierfür lautet wie folgt:
Starten Sie den Metro-Server
Starten Sie Android
Wenn Fehler mit der Meldung "Port 8081 wird bereits verwendet" angezeigt werden, können Sie diesen Prozess abbrechen und erneut ausführen
Siehe Seite "Native Fehlerbehebung reagieren" .
quelle
Wenn Sie unter Linux arbeiten, öffnen Sie das Terminal aus dem App-Stammverzeichnis und führen Sie es aus
Öffnen Sie dann ein anderes Terminalfenster und führen Sie Folgendes aus:
quelle
Ich möchte nur eine nicht offensichtliche Möglichkeit hinzufügen, die hier nicht behandelt wird. Ich verwende @ react-native-community / netinfo zum Erkennen von Netzwerkänderungen, hauptsächlich des Netzwerkstatus. Um den Netzwerk-Aus-Status zu testen, muss der WIFI-Schalter (am Emulator) ausgeschaltet sein. Dadurch wird auch die Brücke zwischen dem Emulator und der Debug-Umgebung effektiv abgeschnitten. Ich hatte WIFI nach meinen Tests nicht wieder aktiviert, da ich nicht am Computer war und es sofort vergaß, als ich zurückkam.
Es besteht die Möglichkeit, dass dies auch bei jemand anderem der Fall ist und es sich lohnt, dies zu überprüfen, bevor Sie weitere drastische Schritte unternehmen.
quelle
Ich hatte die gleichen Probleme, das Problem für mich war, dass sich adb nicht im richtigen Umgebungspfad befand. Der Fehler sagt Ihnen, dass der U-Bahn-Port, während Sie sich in der adb befinden, Ports getötet und neu gestartet werden.
Umgebungsvariable hinzufügen (ADB)
Führen Sie Android Build erneut aus
Oder
quelle
Ich habe mich auch diesem Problem gestellt. Ich habe diesen folgenden Schritt gelöst.
Überprüfen Sie den Android SDK-Pfad Environment Veritable.
Fügen Sie
ANDROID_HOME = C:\Users\user_name\AppData\Local\Android\Sdk
in Systemvariableund
C:\Users\user_name\AppData\Local\Android\Sdk\platform-tools
Pfad in Systemvariable hinzuErsetzen Sie sharedBlacklist wie folgt : Codesegment,
im node_modules / metro-config / src / default / blacklist.js
Führen Sie dann npx react-native run-android --port 9001 aus
Viel Spaß beim Codieren ..!
quelle
Ich habe dies nur erlebt, weil mein Wifi auf meinem Emulator fälschlicherweise ausgeschaltet war. Ich habe es wieder eingeschaltet und es hat gut funktioniert. Hoffe, es ist hilfreich für jemanden
quelle
Die Lösung, die für mich funktioniert hat, ist die folgende:
quelle
Aktualisieren Sie diesen Teil in der Metro Blacklist
quelle
Ich habe das gleiche Problem festgestellt, als ich dem Tutorial " React Native" gefolgt bin (Entwicklung unter Linux und Ausrichtung auf Android).
Dieses Problem hat mir geholfen, das Problem in den folgenden Schritten zu beheben. Führen Sie die folgenden Befehle in der folgenden Reihenfolge aus:
mkdir android/app/src/main/assets
react-native bundle --platform android --dev false --entry-file index.js --bundle-output android/app/src/main/assets/index.android.bundle --assets-dest android/app/src/main/res
react-native run-android
Sie können die obigen Schritte automatisieren, indem Sie sie in einen
scripts
Teil davonpackage.json
wie folgt einfügen :Dann können Sie
npm run android-linux
jedes Mal einfach über Ihre Befehlszeile ausführen .quelle
Versuche Folgendes.
Möglicherweise haben Sie nach den vorherigen Schritten Ausführungen npm start - --reset-cache
Ich arbeite, ich hoffe es hilft dir.
quelle
Standardmäßig wird auf dem Port 8081 ein winziger JavaScript-Server namens "Metro Server" ausgeführt.
Sie müssen diesen Port verfügbar machen, damit dieser Server gestartet werden kann. So,
Wie kann ich den Port freigeben?
http://tenbull.blogspot.com/2019/05/how-to-kill-process-currently-using.html
Wie kann ich den Prozess beenden, der derzeit einen Port auf localhost in Windows verwendet?
und vor allem habe ich meine Knotenversion von 8.x auf 10.x (neueste Version) aktualisiert, wie von Facebook @ https://facebook.github.io/react-native/docs/getting-started vorgeschlagen
quelle
Für mich begann dieses Problem mit dem Upgrade von React-Native. Das Upgrade war erforderlich, um 64-Bit-Unterstützung hinzuzufügen.
Eine wichtige Änderung, die ich für das Upgrade vorgenommen habe, war in ../android/build/build.gradle
Ich musste die targetSdkVersion nach der Warnung von 27 auf 28 ändern, als ich versuchte, den Build (.apk) auf die Goole-Play-Konsole hochzuladen. Ich wusste nicht, dass dies für mich die Hauptursache für den oben genannten Fehler war. Sofortige Antworten von @tom und @tinmarfrutos machten absolut Sinn.
Ich habe das Problem durch Hinzufügen von android gelöst: usedCleartextTraffic = "true" zu meiner android / app / src / debug / AndroidManifest.xml
quelle
In meinem Fall habe ich in meinem Emulator einen Proxy eingerichtet. Es funktioniert wieder normal, nachdem ich diesen Proxy entfernt habe.
quelle
Möglichkeit dieses Fehlers ist auch der falsche Weg, einmal prüfen
quelle
WICHTIG - Möglicherweise befinden sich in Ihrer Umgebung viele virtuelle Geräte. Stellen Sie sicher, dass Sie die Einstellung erneut wiederholen, wenn Sie die AVD ändern.
DEBUG-INFORMATIONEN-
Wenn bei dem oben genannten Fehler ein Fehler auftritt, müssen Sie zunächst überprüfen, was auf Port 8081 ausgeführt wird
Der schnellste Weg, dies zu finden, ist der folgende Befehl im Terminal
Wenn das etwas anzeigt, bedeutet dies, dass der Port blockiert ist. Wenn möglich, entsperren Sie diesen Port.
Andernfalls müssten Sie den Port ändern. Der Prozess dazu wurde bereits im obigen Kommentar von Naveen Kumar erwähnt
Stellen Sie sicher, dass 9001 auch nicht verwendet wird :)
quelle
Versuchen Sie diese Schritte, wenn Sie alles versucht haben, was in den obigen Lösungen erwähnt wurde:
quelle
Wenn Sie unter Linux arbeiten, kann es vorkommen, dass Ihr npm-Remoteserver nicht ausgeführt wird. Öffnen Sie ein anderes Terminal (mit Projektverzeichnis) und führen Sie diesen Befehl sudo npm start oder sudo react-native start aus, bevor Sie sudo react-native run-android ausführen
quelle
Die Fehlermeldung auf dem Emulator ist irreführend. In meinem Fall habe ich ein Macbook verwendet. Ich musste die Berechtigungen für Android / Gradlew durch Ausführen ändern
$ chmod 755 ./gradlew
, und dann konnte die App erstellt und auf dem Android-Emulator bereitgestellt werden.quelle