2016-07-12 41 views
65

Attualmente sto passando attraverso i tutorial React-Native. Ho iniziato con il tutorial Getting Started, in cui ho creato un nuovo progetto nativo reattivo e sono riuscito a eseguire il progetto sul mio dispositivo.React-Native: l'applicazione non è stata registrata errore

Ho quindi avviato lo Props tutorial, ho copiato lo snippet di codice e ho provato a eseguire nuovamente il progetto e ho visualizzato il seguente error message sul mio schermo.

+0

Puoi condividere il tuo codice? –

+0

Possibile duplicato di https://stackoverflow.com/questions/35449248/failure-to-call-appregistry-registercomponent – arcseldon

risposta

191

Suppongo che si tratti di un errore causato dal mancato abbinamento del nome del progetto e del componente registrato.

Hai Inited progetto con un solo nome, vale a dire

react-native init AwesomeApp

Ma nei tuoi index.ios.js file che si registra un altro componente

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

Quando si deve essere

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

Provare a risolvere il problema.

+3

"Bananas" alcuni come funziona per Android. Ma non su IOS. –

+68

Per qualcuno che ha lo stesso problema anche se il nome del componente corrisponde -> Assicurati di non avere nessun altro processo react-native/node in esecuzione su un altro terminale. – Nilesh

+2

Grazie !!! @ Nilesh Che totalmente era! – flunder

0

Invece di cambiare il nome in AppRegistry,

Run reagire nativa banane init, questo creerà reagirà codice standard per il progetto Banane e AppRegistry.registerComponent automaticamente puntare a banane

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

Ho avuto lo stesso problema e per me la causa principale era che ho eseguito (react-native start) il packager da un'altra cartella nativa react (AwesomeApp), mentre ho creato un altro progetto in un'altra cartella.

L'esecuzione del packager dalla directory della nuova app lo ha risolto.

27

maggior parte delle volte il problema è che hai un altro react-native start (vale a dire Reagire Native Packager) server in esecuzione o su un altro terminale o un'altra scheda di TMux (se si utilizza tmux).

È necessario trovare tale processo e chiuderlo, quindi, dopo aver eseguito react-native run-ios per esempio, verrà stabilito un nuovo server di packager registrato per quella specifica applicazione.

trovare solo che processo che utilizza:

ps aux | grep react-native 

trovare l'ID di processo (PID) e uccidere il processo confezionatore utilizzando kill di comando (per esempio kill -9 [PID]). Dovresti trovare l'app launchPackager.command in macOS, non sono sicuro degli altri sistemi operativi.

Quindi provare a eseguire nuovamente il run-ios (o Android). Dovresti essere in grado di vedere il nuovo percorso dopo aver eseguito il nuovo server di packager, ad es.:

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

grazie amico, questa soluzione ha funzionato per me;) –

+0

Funziona, anche se eseguo 'react-native start - -port ', dovrei eseguire' react-native run- 'in un altro modo ?, grazie –

+0

@ SebastiánPalma per quanto ne so, il comando' start' esegue il server packager quindi se hai già compilato la tua applicazione, lì non è necessario eseguire 'run- '. –

7

Modifica MainActivity come questo,

@Override 
protected String getMainComponentName() { 
    return "Bananas"; // here 
} 
+0

ESATTAMENTE! questo era esattamente il mio problema, anche se invece di modificare questo ho modificato AppRegistry.registerComponent con quello – Sijav

+0

e che dire di Ios? –

8

Prima di tutto è necessario avviare l'applicazione:

react-native start 

Quindi, è necessario impostare il nome dell'applicazione come primo argomento di registerComponent .

Funziona bene.

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

grazie, la tua risposta risolve il mio problema. –

1

è necessario registrarsi in index.android.js/index.ios.js

come questo:

'use strict'; 

import { 
    AppRegistry 
} from 'react-native'; 

import app from "./app"; 

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

Questo può anche essere dovuto a Root nome del componente inizia con lettere minuscole .

È errato o piuttosto crea nuovamente il progetto con un nome PascalCase.

ad es. accendere nuova HelloWord

1

Nel mio caso c'è questa linea in MainActivity.java che è stato perso quando ho usato react-native-rename cli (da NPM)

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

Ovviamente tu hai bisogno di rinominarlo in nome della tua app.

Problemi correlati