Invarianter Verstoß: „main“ wurde nicht registriert
Lesezeit: 5 Minuten
Pankaj Sharma
Neu bei React Native:
Ich habe ein brandneues Projekt mit Expo init gestartet und bin dann den Anweisungen unter https://reactnavigation.org/docs/hello-react-navigation gefolgt
Ich führe das Projekt mit expo start aus und erhalte diese Fehlermeldung. Invarianter Verstoß: „main“ wurde nicht registriert. Dies kann passieren, wenn:
Metro (der lokale Entwicklungsserver) wird aus dem falschen Ordner ausgeführt. Überprüfen Sie, ob Metro ausgeführt wird, stoppen Sie es und starten Sie es im aktuellen Projekt neu.
Ein Modul konnte aufgrund eines Fehlers nicht geladen werden AppRegistry.registerComponent wurde nicht angerufen.
Wir hatten gerade das gleiche Problem, sind uns immer noch nicht ganz sicher, wo das eigentliche Problem liegt, außer beim Löschen .expo.expo-sharedpackage-lock.json Und node_modules und wenn Sie Garn verwenden, dann yarn.lock. Und dann laufen npm run start hat es geschafft
– oliverwebr
1. Juli 2020 um 11:39 Uhr
Das ist mir beim Entfernen und Ändern von Paketen in package.json passiert. Ich habe beispielsweise „react-native-reanimated“ und „react-native-gesture-handler“ aktualisiert und dann @react-native-community/masked-view usw. entfernt. Ich habe alle Änderungen rückgängig gemacht und es funktioniert wieder.
– Albert Vila Calvo
10. Januar 2022 um 13:40 Uhr
Öffne das index.jsder Inhalt der Datei sollte so aussehen:
/**
* Returns the name of the main component registered from JavaScript.
* This is used to schedule rendering of the component.
*/
@Override
protected String getMainComponentName() {
return "X";
}
Der 'X' von MainActivity.java Und index.js muss passen.
In meinem Fall war die if-Anweisung nicht erforderlich, aber das Ändern des App-Namens in bestimmten Ordnern hat den Zweck erfüllt. Vielen Dank!
– em_code
28. Juni 2021 um 11:34
In meinem Fall ändere ich meinen App-Namen in app.json und android/app/src/main/res/values/strings.xml, zeige aber die Meldung „Invariante Verletzung: ‚mein vorheriger App-Name‘ wurde nicht registriert“ an. Also ändere ich den Namen in MainActivity .java als Beispiel und funktioniert. Danke 🙂
– Carlos Martínez
15. September 2021 um 15:41 Uhr
Da ich expo verwende, konnte ich index.js nicht bearbeiten. Gibt es andere Lösungen?
– ums2026
30. Dezember 2021 um 22:32 Uhr
Diese Fehler machen und jeden Tag dazulernen. Danke für diese Antwort. Übrigens habe ich diese Fehlermeldung erhalten, als ich das iOS-Verzeichnis aus einem anderen Projekt verwendet und dieses in meinem aktuellen Projekt verwendet habe (da dies eine einfache Möglichkeit zu sein scheint, ein älteres Projekt zu aktualisieren, anstatt alles manuell zu aktualisieren).
– Irfan wani
10. November 2022 um 5:31 Uhr
Das hat bei mir funktioniert:
Löschen Sie node_modules und Ihre Sperrdatei (package-lock.json / Yarn.lock)
Ändern Sie die Expo-Paketversion in package.json in 38.0.8
Führen Sie „garn“ oder „npm install“ aus
Führen Sie Expo Install React-Native-Safe-Area-Context aus
Löschen Sie den Ordner „node_modules“ überall, laden Sie ihn erneut und hören Sie dann mit der Eingabe auf.
in index.js. Es sieht also so aus, als ob der erste Parameter basierend auf der angezeigten Fehlermeldung übergeben werden muss. In meinem Fall war mein Projektname AwesomeProject und der von Metro gemeldete Fehler war:
Invariant Violation: "awesomeproject" has not been registered.
Also dachte ich, dass das Hinzufügen von toLowerCase() das Problem lösen würde, und das tat es!!
Dieses Problem trat jedoch auf, als ich versuchte, es unter macOS auszuführen npx react-native run-macos und nachdem das Problem gelöst war, habe ich versucht, die iOS-Version aufzurufen, und dann habe ich es bekommen Invariant Violation: "AwesomeProject" has not been registered.
Letztendlich habe ich beides zum Laufen gebracht, indem ich die App wie folgt zweimal registriert habe:
Das gleiche funktioniert auch mit npx react-native run-android.
ThinkAndCode
index.js
AppRegistry.registerComponent("X", () => Root);
Wenn Sie mit diesem Problem konfrontiert sind Android Stellen Sie dann sicher, dass beides der Fall ist mainactivity.java Und index.js enthält das gleiche „X“
Wir hatten gerade das gleiche Problem, sind uns immer noch nicht ganz sicher, wo das eigentliche Problem liegt, außer beim Löschen
.expo
.expo-shared
package-lock.json
Undnode_modules
und wenn Sie Garn verwenden, dannyarn.lock
. Und dann laufennpm run start
hat es geschafft– oliverwebr
1. Juli 2020 um 11:39 Uhr
Das ist mir beim Entfernen und Ändern von Paketen in package.json passiert. Ich habe beispielsweise „react-native-reanimated“ und „react-native-gesture-handler“ aktualisiert und dann @react-native-community/masked-view usw. entfernt. Ich habe alle Änderungen rückgängig gemacht und es funktioniert wieder.
– Albert Vila Calvo
10. Januar 2022 um 13:40 Uhr