Je suis actuellement en train de parcourir les tutoriels React-Native. J'ai commencé avec le didacticiel de mise en route, où j'ai créé un nouveau projet natif de réaction et réussi à exécuter le projet sur mon appareil.
J'ai ensuite commencé le didacticiel Props , j'ai copié l'extrait de code et essayé à nouveau d'exécuter le projet et le message d'erreur suivant s'affiche sur mon écran:
Réponses:
Je suppose que c'est une erreur causée par un nom de projet différent de celui de votre composant enregistré.
Vous avez lancé un projet avec un seul nom, c.-à-d.
react-native init AwesomeApp
Mais dans votre fichier index.ios.js, vous enregistrez un autre composant
AppRegistry.registerComponent('Bananas', () => Bananas);
Quand ça doit être
AppRegistry.registerComponent('AwesomeApp', () => Bananas);
Essayez de le réparer.
la source
moduleName:@"AwesemeApp"
ligne dans leur fichier AppDelegate.mLa plupart du temps, le problème est que vous avez un autre
react-native start
serveur (c'est-à-dire React Native Packager) fonctionnant soit sur un autre terminal, soit sur un autre onglet de TMUX (si vous utilisez TMUX).Vous devez trouver ce processus et le fermer, donc après avoir exécuté
react-native run-ios
par exemple, il établira un nouveau serveur de packager qui sera enregistré pour cette application spécifique.Trouvez simplement ce processus en utilisant:
trouvez l'ID de processus (PID) et tuez le processus de packager en utilisant la
kill
commande (par exemplekill -9 [PID]
). Vous devriez trouver l'launchPackager.command
application dans macOS, pas sûr des autres systèmes d'exploitation.Ensuite, essayez à nouveau d'exécuter le
run-ios
(ou Android). Vous devriez pouvoir voir le nouveau chemin après avoir exécuté le nouveau serveur de packager, par exemple:la source
react-native start --port <otherport>
, dois-je courirreact-native run-<platform>
d'une autre manière?, Mercistart
commande exécute le serveur du packager donc si vous avez déjà compilé votre application, il n'est pas nécessaire de faire lerun-<platform>
.Modifiez
MainActivity
comme ça,la source
Ma solution est de changer le nom du module dans "AppDelegate.m"
de
moduleName:@"AwesomeProject"
à
moduleName:@"YourNewProjectName"
la source
Tout d'abord, vous devez démarrer votre application:
Ensuite, vous devez définir le nom de votre application comme premier argument de registerComponent.
Ça fonctionne bien.
la source
Veuillez vérifier votre fichier app.json dans le projet. s'il n'y a pas de ligne appKey, vous devez l'ajouter
la source
Dans mon cas, il y a cette ligne dans MainActivity.java qui a été manquée lorsque j'ai utilisé
react-native-rename
cli (de NPM)De toute évidence, vous devez le renommer avec le nom de votre application.
la source
Je pense que le serveur de nœuds fonctionne à partir d'un autre dossier. Alors tuez-le et exécutez dans le dossier actuel.
Rechercher le serveur de nœuds en cours d'exécution: -
lsof -i :8081
Tuez le serveur de nœuds en cours d'exécution: -
kill -9 <PID>
Par exemple:-
kill -9 1653
Démarrez le serveur de nœuds à partir du dossier natif react actuel: -
react-native run-android
la source
J'ai eu le même problème et pour moi, la cause première était que j'ai exécuté (démarrage de réaction native) le packager à partir d'un autre dossier de réaction native (AwesomeApp), tandis que j'ai créé un autre projet dans un autre dossier.
L'exécution du packager à partir du répertoire de la nouvelle application l'a résolu.
la source
Cela peut également être dû au fait que le nom du composant racine commence par des minuscules.
Corrigez-le ou créez à nouveau le projet avec un nom PascalCase.
Par exemple, allumez un nouveau HelloWord
la source
Toutes les réponses données n'ont pas fonctionné pour moi.
J'ai eu un autre processus de nœud en cours d'exécution dans un autre terminal, j'ai fermé ce terminal de commande et tout a fonctionné comme prévu.
la source
vous devez l' enregistrer dans index.android.js / index.ios.js
comme ça:
la source
J'ai résolu ce problème en modifiant ce qui suit dans le fichier app.json. Il semble que la lettre majuscule lançait cette erreur.
De:
À:
la source
Plutôt que de changer le nom en
AppRegistry
,Exécutez les bananes init natives de réaction, cela créera un code standard de réaction pour le projet Bananas et
AppRegistry.registerComponent
pointera automatiquement vers les bananesla source
Aucune des solutions n'a fonctionné pour moi. J'ai dû tuer le processus suivant et relancer react-native run-android et cela a fonctionné.
node ./local-cli/cli.js start
la source
J'ai eu le même problème. J'utilisais Windows pour créer une application native de réaction pour Android et j'avais la même erreur. Voici ce qui a fonctionné.
Enregistrez et exécutez l'application normalement. Cela a fonctionné pour moi.
la source
Le problème apparaîtra également lorsque, dans index.js, vous avez nommé l'application différemment du nom que vous lui avez donné pour le package android / ios ; cela s'est probablement produit lorsque vous avez éjecté l'application. Assurez-vous donc que lors de l'appel
AppRegistry.registerComponent('someappname', () => App)
, someappname est également utilisé pour les packages natifs ou vice versa.la source
J'ai compris où se trouvait le problème dans mon cas (système d'exploitation Windows 10), mais cela pourrait également aider sous Linux (vous pouvez essayer).
Dans
windows power shell
, lorsque vous souhaitez exécuter une application (première fois après le démarrage du PC) en exécutant la commande suivante,Il démarre un
node process/JS server
dans un autreconsole panel
et vous ne rencontrez pas cette erreur. Mais, quand vous voulez exécuter une autre application , vous devez devoir fermer que déjà en cours d' exécutionJS server console panel
. Et puis exécutez la même commande pour une autre application à partir depower shell
, cette commande démarrera automatiquement un autre nouveau serveur JS pour cette application, et vous ne rencontrerez pas cette erreur.Vous n'avez pas besoin de fermer et de rouvrir
power shell
pour exécuter une autre application, vous devez fermernode console
pour exécuter une autre application.la source
Après avoir lu tout ce qui précède, j'ai trouvé qu'il pourrait y avoir une autre raison à cela.
Dans mon cas:
react-native-cli: 2.0.1
natif de réaction: 0,60,4
et structure suivante:
Il faut tout d'abord noter que index.android n'a pas été mis à jour dans Android Studio lorsque la construction est exécutée par Metro builder (react-native run-android), donc cela doit être fait manuellement. Aussi dans le studio Android ne "lit" pas le
app.json (créé par défaut avec index.js, qui a renommé index.android.js):
et ainsi de suite
(dans mon cas)
cause le fait qu'Android Studio ne sait pas à quoi se réfère authApp. Je corrige pour le moment en faisant référence au nom de l'application avec son nom de chaîne et en n'utilisant pas cette importation depuis app.json:
la source
Cela l'a résolu pour moi
Donc mon
index.js
dossierEt mon
package.json
dossier:la source
Cette solution a fonctionné pour moi après 2 jours de débogage. Change ça :
à
la source