React-Native: l’application n’a pas été enregistrée

Je suis en train de parcourir les tutoriels React-Native. J’ai commencé par le didacticiel 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 lancé le didacticiel Props , j’ai copié l’extrait de code et essayé de relancer le projet et le message d’erreur suivant apparaît sur mon écran:

Je suppose que c’est une erreur provoquée par le fait que le nom du projet et votre composant enregistré ne correspondent pas.

Vous avez créé un projet avec un nom, par exemple

react-native init AwesomeApp

Mais dans votre fichier index.ios.js, vous enregistrez d’autres composants

AppRegistry.registerComponent('Bananas', () => Bananas);

Quand ça doit être

AppRegistry.registerComponent('AwesomeApp', () => Bananas);

Essayez de le réparer.

La plupart du temps, le problème est que vous avez un autre serveur de react-native start (React Native Packager) sur un autre terminal ou un autre onglet de TMUX (si vous utilisez TMUX).

Vous devez trouver ce processus et le fermer, par exemple, après avoir exécuté react-native run-ios , il créera un nouveau serveur de conditionnement qui s’est enregistré pour cette application spécifique.

Il suffit de trouver ce processus en utilisant:

 ps aux | grep react-native 

Recherchez l’ID de processus (PID) et arrêtez le processus de conditionnement en utilisant la commande kill (par exemple kill -9 [PID] ). Vous devriez trouver l’application launchPackager.command 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 conditionnement, par exemple:

 Looking for JS files in /Users/afshin/Desktop/awesome-app 

Modifiez MainActivity comme ceci,

 @Override protected Ssortingng getMainComponentName() { return "Bananas"; // here } 

Tout d’abord, vous devez commencer votre application:

 react-native start 

Ensuite, vous devez définir le nom de votre application en tant que premier argument de registerComponent.

Ça fonctionne bien.

 AppRegistry.registerComponent('YourProjectName', () => YourComponentName); 

Dans mon cas, il y a cette ligne dans MainActivity.java qui a été manquée lorsque j’ai utilisé react-native-rename cli (à partir de NPM)

 protected Ssortingng getMainComponentName() { return "AwesomeApp"; } 

Evidemment, tu dois le renommer au nom de ton application.

J’ai eu le même problème et pour moi la cause principale était que j’ai exécuté (démarrage réactif) le conditionneur à partir d’un autre dossier réactif (AwesomeApp), pendant que je créais un autre projet dans un autre dossier.

L’exécution du packager à partir du répertoire de la nouvelle application l’a résolu.

Cela peut également être dû au nom du composant racine qui commence par une minuscule.

Corrigez-le ou créez-le plutôt avec un nom PascalCase.

par exemple allumer un nouveau HelloWord

vous devez l’ enregistrer dans index.android.js / index.ios.js

comme ça:

 'use ssortingct'; import { AppRegistry } from 'react-native'; import app from "./app"; AppRegistry.registerComponent('test', () => app); 

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 ; c’est probablement arrivé lorsque vous avez éjecté l’application. Donc, assurez-vous que lorsque vous appelez AppRegistry.registerComponent('someappname', () => App) , someappname est également utilisé pour les packages natifs ou vice-versa.

Je pense que le serveur de noeud est en cours d’exécution à partir d’un autre dossier. Alors tuez-le et lancez-le dans le dossier actuel.

Rechercher serveur de noeud en cours d’exécution: –

lsof -i :8081

Tuez le serveur de noeud en cours d’exécution: –

kill -9

Par exemple:-

kill -9 1653

Démarrer le serveur de noeud à partir du dossier natif de réaction actuelle: –

react-native run-android

Plutôt que de changer le nom dans AppRegistry ,

Exécuter init Bananas natif, cela créera un code de réaction standard pour le projet Bananas et AppRegistry.registerComponent automatiquement les bananes

 AppRegistry.registerComponent('Bananas', () => Bananas); 

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 sur un autre terminal, j’ai fermé ce terminal de commande et tout fonctionnait comme prévu.

Non des solutions ont fonctionné pour moi. J’ai dû tuer le processus suivant et relancer le run-android natif et ça a fonctionné.

noeud ./local-cli/cli.js

J’ai eu le même problème. J’utilisais Windows pour créer une application native pour Android et réagissait de la même manière. Voici ce qui a fonctionné.

  • Accédez au dossier ANDROID dans votre racine.
  • Créez un fichier avec le nom: local.properties
  • Ouvrez-le dans l’éditeur et écrivez:

sdk.dir = C: \ Utilisateurs \ NOM D’UTILISATEUR \ AppData \ Local \ Android \ sdk

  • Remplacez USERNAME par le nom de votre machine.

Enregistrez et exécutez l’application normalement. Cela a fonctionné pour moi.

Veuillez vérifier votre fichier app.json dans le projet. s’il n’y a pas de ligne appKey, vous devez l’append

 { "expo": { "sdkVersion": "27.0.0", "appKey": "mydojo" }, "name": "mydojo", "displayName": "mydojo" }