web-dev-qa-db-de.com

React kann keine Eintragsdatei in einem der Roots finden

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?

23
Bocaxica

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.

23
Bocaxica

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.

29
Preet V

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?

4
Colin Ramsay

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. 

1
Scott Skiles

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.

0
Kimmo Laine

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

0
Sergey Vetrov