web-dev-qa-db-fra.com

React-Native: erreur de l'application non enregistrée

Je suis actuellement en train de suivre les tutoriels React-Native. J'ai commencé par le didacticiel de mise en route, où j'ai créé un nouveau projet natif de réaction et que j'ai réussi à exécuter le projet sur mon appareil.

J'ai ensuite démarré le didacticiel Props , j'ai copié l'extrait de code et essayé de réexécuter le projet. Le message d'erreur suivant s'affichait sur mon écran:

112
Adam

La plupart du temps, le problème est que vous avez un autre serveur react-native start (c'est-à-dire React Native Packager) qui s'exécute sur un autre terminal ou un autre onglet de TMUX (si vous utilisez TMUX).

Vous devez trouver ce processus et le fermer. Ainsi, après avoir exécuté react-native run-ios, par exemple, il établira un nouveau serveur de conditionnement qui s’est inscrit 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 supprimez le processus de création de package à l'aide de la commande kill (par exemple, kill -9 [PID]). Vous devriez trouver l'application launchPackager.command dans macOS, mais vous n'êtes pas sûr des autres systèmes d'exploitation.

Ensuite, essayez de ré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 
35
Afshin Mehrabani

Modifiez MainActivity comme ceci, 

@Override
protected String getMainComponentName() {
    return "Bananas"; // here
}
19
Daniyar Saumbayev

Tout d'abord, vous devez démarrer votre application:

react-native start

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

Ça fonctionne bien.

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

Ma solution est de changer le nom du module dans "AppDelegate.m" 

à partir de moduleName:@"AwesomeProject"

to moduleName:@"YourNewProjectName"

9
user8637708

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)

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

Évidemment, vous devez renommer le nom de votre application.

5
xemasiv

J'ai eu le même problème et pour moi la cause principale était que j'avais lancé (réactif natif) le conditionneur depuis un autre dossier réactif natif (AwesomeApp), alors que j'avais créé un autre projet dans un autre dossier.

L'exécution du conditionneur à partir du répertoire de la nouvelle application a résolu le problème.

3
la5zl0

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

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

Je pense que le serveur de nœud est en cours d'exécution à partir d'un autre dossier. Alors tuez-le et exécutez-le dans le dossier actuel. 

Trouver le serveur de noeud en cours d'exécution: -  

lsof -i :8081

Supprimer le serveur de noeud en cours d'exécution: -

kill -9 <PID>

Par exemple:-

kill -9 1653

Démarrer le serveur de noeud à partir du dossier natif de réaction actuel: -

react-native run-Android

2
Arshid KV

vous devez enregistrer dans index.Android.js/index.ios.js

comme ça:

'use strict';

import {
    AppRegistry
} from 'react-native';

import app from "./app";

AppRegistry.registerComponent('test', () => app);
1
linSir

Toutes les réponses données ne fonctionnaient pas pour moi. 

Un autre processus de noeud fonctionnait dans un autre terminal, j’ai fermé ce terminal de commande et tout a fonctionné comme prévu.

1
Khemraj

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

Corrigez-le ou créez de nouveau le projet avec un nom PascalCase.

par exemple. allumer le nouveau HelloWord

1
Venkat

Le problème apparaît également lorsque, dans index.js, vous avez nommé l’application différemment du nom que vous lui avez attribué pour le package Android/ios ; cela est probablement arrivé lorsque vous avez éjecté l'application. Assurez-vous donc que lorsque vous appelez AppRegistry.registerComponent('someappname', () => App), someappname est également utilisé pour les packages natifs ou vice-versa.

1
gavri

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

react-native: 0.60.4

et structure suivante:

enter image description here

Il faut d’abord noter que index.Android n’a pas été mis à jour dans Android Studio lors de la compilation exécutée par le constructeur Metro (react-native run-Android) et doit donc être effectué manuellement. Aussi dans Android studio ne lit pas les informations

app.json (créé par défaut avec index.js, qui a renommé index.Android.js):

 {
    "name": "authApp",
    "displayName": "authApp"
 }

et si cela aime

(dans mon cas)

import {authApp as appName} from './app.json';

cause le fait que Android studio ne sait pas à quoi se réfère authApp. Je répare 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:

AppRegistry.registerComponent('authApp', () => MyApp);
0
Carmine

J'avais le même problème… .. J'utilisais Windows pour créer une application native pour Android et réagissait à la même erreur. Voici ce qui a fonctionné.

  • Naviguez jusqu'au dossierAndroiddans votre racine.
  • Créez un fichier avec le nom suivant:local.properties
  • Ouvrez-le dans l'éditeur et écrivez: 

sdk.dir = C:\Utilisateurs\NOMUTILISATEUR\AppData\Local\Android\sdk

  • Remplacez USERNAME par le nom de votre machine.

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

0
Utsav Chawla

Plutôt que de changer le nom dans AppRegistry,

Lancez react-native init Bananas, cela créera le code standard pour le projet Bananas et AppRegistry.registerComponent pointera automatiquement vers bananes

AppRegistry.registerComponent('Bananas', () => Bananas);
0
vipul srivastav

Aucune des solutions n'a fonctionné pour moi. Je devais tuer le processus suivant et relancer réact-native run-Android et cela fonctionnait.

noeud ./local-cli/cli.js start

0
G. Thabit