Ich verwende React Native als Pod in meinem iOS-Projekt ... Wenn ich versuche, eine mit React Native erstellte Ansicht zu laden, wird der Fehlerbildschirm angezeigt, der auf das Terminal-Fenster verweist, in dem npm ausgeführt wird.
In dem Terminal ist der Fehler, den ich sehe,: Fehler: Eintrittsdatei in keinem der Roots gefunden:
Ich habe ein paar Dinge ausprobiert, die Datei an einen anderen Ort verschoben, aber kein Glück ... Ich habe "npm start" ausgeführt und suche die Datei in " http: // localhost: 8081/ " Der aktuelle Speicherort der Datei befindet sich am selben Speicherort, von dem aus "npm start" ausgeführt wurde.
Ich bin hier komplett festgeklemmt ... Hat ich etwas falsch konfiguriert? Wie kann ich von hier aus Fehler beheben?
Entschuldigung für die Beantwortung meiner eigenen Frage (ein bisschen lahm), aber ich hoffe, es hilft jemandem.
Anscheinend müssen wir den Befehl npm ausführen, indem wir einen alternativen Pfad angeben.
npm run start -- --root <directory_with_your_react_component_js_sources>
Auf http://facebook.github.io/react-native/docs/embedded-app.html#content ist eine Anleitung zur Integration von React Native in eine vorhandene App.
Suchen Sie nach dem Knotenserver, der in einem der bash-Terminals ausgeführt wird. Dies wurde wahrscheinlich durch das zuvor von Ihnen gestartete ReactNative XCode-Projekt ausgelöst. Stoppen Sie den Prozess und führen Sie das XCode-Projekt erneut aus. Dies sollte das Problem beheben.
Dies geschieht, wenn React einen Port verwenden möchte, der bereits von einer anderen Anwendung verwendet wird. Da React Port 8081 abhört, können Sie den Prozess zum Laufen bringen Dieser Port gibt in Shell Folgendes ein:
lsof -n -i4TCP:8081
Sie erhalten eine Antwort wie folgt:
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
node 28571 username 32u IPv6 0x742e2ab233abdb9f 0t0 TCP *:sunproxyadmin (LISTEN)
Habe das nur getötet, indem du Shell kill -9 <PID>
Eingibst. Verwenden Sie dieselbe PID wie in der letzten Antwort.
Führen Sie dann npm start
Aus.
Es gibt dieses Problem:
https://github.com/facebook/react-native/issues/541
Was scheint das Gleiche zu sein. Der Benutzer schien darauf hinzuweisen, dass er das Projekt zuvor aus diesem Verzeichnis ausgeführt hatte, was mich zu der Frage veranlasst, ob dies auf einen hängenden oder übrig gebliebenen Packager eines vorherigen Laufs zurückzuführen ist. Schließen Sie das Terminalfenster und starten Sie das Xcode-Projekt erneut.
Im Allgemeinen klingt dies nach einem Problem, bei dem der Packager die Dateien nicht wie erwartet generiert. Gibt es noch andere Meldungen im Terminalfenster?
Ich wollte dies aktualisieren, nachdem ich ein wenig frustriert war, dass mein Setup immer noch nicht funktionierte, nachdem alle Knotenprozesse abgebrochen und der obige Befehl ausgeführt wurde.
Derzeit scheint es ein offenes Problem von ReactNative zu geben: https://github.com/facebook/react-native/issues/14246
Die Lösung hierfür ist, den extern gestarteten Paketmanager zu beenden und einfach "npm start" im Projektordner auszuführen.
Prüfen Sie, ob Sie index.ios
oder index
in Ihrer AppDelegate.m haben:
jsCodeLocation = [[RCTBundleURLProvider sharedSettings] jsBundleURLForBundleRoot:@"index.ios" fallbackResource:nil];
Ich hatte index
und habe vorher index.ios
und index.Android
verwendet, deshalb ist es fehlgeschlagen.
Nach meiner Erfahrung liegt das an Watchman und Jest.
Die Lösung, die ich gefunden habe, ist Hinzufügen
name = name.replace('/', '\\');
zu 'node_modules\jest-haste-map\build\crawlers\watchman.js'
Weitere Informationen finden Sie hier Watchman funktioniert nicht mit React Native