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:
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
Modifiez MainActivity
comme ceci,
@Override
protected String getMainComponentName() {
return "Bananas"; // here
}
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);
Ma solution est de changer le nom du module dans "AppDelegate.m"
à partir de moduleName:@"AwesomeProject"
to moduleName:@"YourNewProjectName"
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.
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.
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"
}
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
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);
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.
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
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.
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:
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);
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é.
sdk.dir = C:\Utilisateurs\NOMUTILISATEUR\AppData\Local\Android\sdk
Enregistrez et exécutez l'application normalement. Cela a fonctionné pour moi.
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);
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