Tout d’abord, je ne sais pas comment réagir, mais j’imaginais que le déploiement sur un périphérique iOS au lieu du simulateur ne serait pas trop difficile à faire avec la documentation. Ils étaient un peu clairsemés mais je suis quelque part et maintenant je suis coincé. J'ai créé un fichier main.jsbundle, je l'ai ajouté au projet Xcode et j'ai supprimé la mise en commentaire de la ligne dans AppDelegate.m.
Lorsque je le déploie, j'obtiens cette erreur:
2015-03-26 16:13:08.538 AwesomeProject[4753:2477032] >
RCTJSLog> "Running application "AwesomeProject" with appParams: {"rootTag":1,"initialProps":{}}. __DEV__ === true, development-level warning are ON, performance optimizations are OFF"
2015-03-26 16:13:08.547 AwesomeProject[4753:2477032] >
RCTJSLog> "Error:
stack:
runApplication main.jsbundle:33769
jsCall main.jsbundle:7157
_callFunction main.jsbundle:7404
applyWithGuard main.jsbundle:877
guardReturn main.jsbundle:7206
callFunctionReturnFlushedQueue main.jsbundle:7413
URL: file:///private/var/mobile/Containers/Bundle/Application/DBC0DAF4-B568-4CF5-B156-9EFEE4E7FF4A/AwesomeProject.app/main.jsbundle
line: 1536
message: Invariant Violation: Application AwesomeProject has not been registered."
2015-03-26 16:13:08.723 AwesomeProject[4753:2477032] >
RCTJSLog> "#CLOWNTOWN (error while displaying error): Network request failed"
Je suis à peu près sûr que le correctif de @ krazyeom n'a rien à voir avec cette erreur. Dans mon cas, j'ai résolu le problème en quittant le terminal qui fonctionnait depuis une application de test précédente que j'avais exécutée. Il semble que le terminal était confus et était toujours lié à un processus dont le projet n'était plus chargé dans XCode. Essayez ce qui suit:
Votre problème ne devrait pas avoir de rapport avec la console, si vous avez correctement intégré votre javascript dans l'application ios, il ne tentera pas de parler au serveur dev, il obtiendra simplement le javascript de l'ensemble.
D'après le message d'erreur, je suppose que vous avez peut-être renommé votre composant principal. Assurez-vous que le 'AppName'
Que vous passez dans le
AppRegistry.registerComponent('AppName' /* <- */, ... )
correspond avec le @"AppName"
sur votre AppDelegate.m
sur l'appel
[[RCTRootView alloc] initWithBundleUrl:...
moduleName:@"AppName" // <-
launchOptions:...
C'est parce que le serveur react-native surveille toujours l'ancien. Vous devez d'abord arrêter le serveur.
Vous pouvez simplement tuer le processus.
Dans le terminal
ps aux | grep react
Tuer ou tuer le processus et ensuite
npm start
AppRegistry définit le point d'entrée de l'application et fournit le composant racine.
Votre premier paramètre ne correspond pas à votre nom de projet.
AppRegistry.registerComponent('AwesomeProject', () => YourMainComponent);
Le premier paramètre de registerComponent
doit être le nom de votre projet, le deuxième paramètre est une fonction anonyme qui renvoie votre composant réactif racine.
Si le premier paramètre ne correspond pas au nom du projet xcode, vous obtenez l'erreur que votre application n'a pas été enregistrée.
Si vous n'avez pas AppRegistry dans la portée, vous pouvez l'appeler ainsi: React.AppRegistry.registerComponent
ou vous pouvez l’assigner à la AppRegistry
var
var {
AppRegistry
} = React;
AppRegistry.registerComponent('abc',() => ***);
le 'abc'
doit être identique à la moduleName:@'abc'
dans le nom du fichier AppDelegate.m
J'ai eu le même problème. Je l'ai résolu en donnant le même nom à la fois moduleName d'AppDelegate et AppRegistry.registerComponent
Si vous exécutez l'application avec $ react-native run-ios
vous devrez renommer le champ moduleName
dans ./ios/[project name]/AppDelegate.m
pour correspondre au nouveau nom du projet. Actualisez le simulateur téléphonique et le nouveau code devrait s'afficher.
Avez-vous changé le nom de l'application que vous enregistrez? J'ai lancé l'application avec le nom 'tricky', puis j'ai changé le nom plus tard dans cette ligne:
AppRegistry.registerComponent('MyNewApp', () => MyNewApp);
et j'ai commencé à avoir l'erreur invariante.
Référence une personne sans nom.
ça marche pour moi.
J'ai eu presque le même problème que vous avez actuellement il y a quelques jours. Pour moi, c'était un vrai appareil.
Parmi toutes mes recherches, la solution qui a fonctionné pour moi est la suivante:
C:\Users\username\AppData\Local\Android\Sdk\platform-tools\
)Je ne suis pas fan de tout fermer alors je continue à creuser davantage.
Tout ce que je devais faire était dans ma fenêtre de terminal, j'ai lancé cette commande:
../lala/node_modules/react-native/packager/launchPackager.command ; exit;
Mon nom de projet était "lala", alors trouvez qu'il y a aussi node_modules dans votre projet.
remplacez lala par le nom de votre projet, cela devrait fonctionner.
S'il y a une erreur, le port est déjà utilisé:
ERROR Packager can't listen on port 8081
Ensuite, vous avez deux choix:
../lala/node_modules/react-native/packager/packager.js
puis recherchez votre numéro de port, exemple 8081, et remplacez-le par le numéro de port non utilisé.var options = parseCommandLine([{ command: 'port', default: 8082, }, {
Enregistrez ce fichier, puis exécutez à nouveau la commande ci-dessus.
De cette façon, je peux exécuter plusieurs réactions (ou réactions).
Même erreur, tout redémarrer, y compris le xcode et le terminal, a fonctionné pour moi.
J'ai le même message dans la console.
message: violation invariante: l'application AwesomeProject n'a pas été enregistrée. "
Je viens d'ajouter REACT_EDITOR=atom
sur le fichier ~/.bashrc.