javascript - que - react para android
React-Native: error de aplicaciĆ³n no registrada (18)
Antes que nada debes iniciar tu aplicación:
react-native start
Luego, debe establecer el nombre de su aplicación como el primer argumento de registerComponent.
Funciona bien.
AppRegistry.registerComponent(''YourProjectName'', () => YourComponentName);
Actualmente estoy revisando los tutoriales React-Native. Comencé con el tutorial de Inicio, donde hice un nuevo proyecto nativo de reacción y logré ejecutar el proyecto con éxito en mi dispositivo.
Luego comencé el tutorial de Props , copié el fragmento de código e intenté ejecutar el proyecto nuevamente y tuve el siguiente mensaje de error en mi pantalla:
Creo que el servidor de nodo se ejecuta desde otra carpeta. Así que mátalo y ejecútalo en la carpeta actual.
Encuentra el servidor de nodo en ejecución: -
lsof -i :8081
Eliminar el servidor de nodo en ejecución: -
kill -9 <PID>
P.ej:-
kill -9 1653
Inicie el servidor de nodo desde la carpeta nativa actual de reacción: -
react-native run-android
Descubrí dónde estaba el problema en mi caso (sistema operativo Windows 10), pero también podría ayudar en Linux (podría intentarlo).
En
windows power shell
, cuando desea ejecutar una aplicación (la primera vez después del arranque de la PC) ejecutando el siguiente comando,
react-native run-android
Inicia un
node process/JS server
en otro
console panel
, y no encuentra este error.
Pero, cuando desea ejecutar
otra aplicación
,
debe
cerrar la
que
ya está ejecutando el
JS server console panel
.
Y luego ejecute el mismo comando para otra aplicación desde el
power shell
, ese comando iniciará automáticamente otro
nuevo
servidor JS
para esta aplicación, y no encontrará este error.
No necesita
cerrar y volver a abrir
power shell
para ejecutar otra aplicación, debe
cerrar la
node console
para ejecutar otra aplicación.
Después de leer todo lo anterior, descubrí que podría haber otra razón para esto.
En mi caso:
reaccionar-nativo-cli: 2.0.1
reaccionar nativo: 0.60.4
y siguiente estructura:
Primero hay que tener en cuenta que index.android no se ha actualizado en Android Studio cuando la construcción se ejecuta por Metro Builder (react-native run-android), por lo que debe hacerse manualmente. También en el estudio de Android no "lee" el
app.json (creado de forma predeterminada junto con index.js, que cambió el nombre de index.android.js):
{
"name": "authApp",
"displayName": "authApp"
}
y esto como
(en mi caso)
import {authApp as appName} from ''./app.json'';
Porque el estudio de Android no sabe a qué se refiere authApp. Arreglo por el momento refiriéndome al nombre de la aplicación con su nombre de cadena y no usando esa importación desde app.json:
AppRegistry.registerComponent(''authApp'', () => MyApp);
El problema también aparecerá
cuando, en index.js, haya nombrado la aplicación de manera diferente al nombre que le dio al paquete android / ios
;
probablemente esto sucedió cuando expulsó la aplicación.
Así que asegúrese de que al llamar a
AppRegistry.registerComponent(''someappname'', () => App)
, someappname también se use para los paquetes nativos o viceversa.
En lugar de cambiar el nombre en
AppRegistry
,
Ejecute react-native init Bananas, esto creará un código
AppRegistry.registerComponent
para el proyecto Bananas y
AppRegistry.registerComponent
apuntará automáticamente a las bananas
AppRegistry.registerComponent(''Bananas'', () => Bananas);
En mi caso, hay una línea en MainActivity.java que se perdió cuando utilicé
react-native-rename
cli (de NPM)
protected String getMainComponentName() {
return "AwesomeApp";
}
Obviamente, debes cambiarle el nombre por el nombre de tu aplicación.
Esto también puede deberse a que el nombre del componente raíz comienza con minúsculas.
Grabarlo o más bien crear el proyecto una vez más con un nombre PascalCase.
Por ejemplo, encender HelloWord nuevo
La mayoría de las veces el problema es que tiene otro servidor de
react-native start
(es decir, React Native Packager) que se ejecuta en otro terminal u otra pestaña de TMUX (si está usando TMUX).
Debe encontrar ese proceso y cerrarlo, por lo que después de ejecutar
react-native run-ios
por ejemplo, establecerá un nuevo servidor de empaquetador que se registró para esa aplicación específica.
Simplemente encuentre ese proceso usando:
ps aux | grep react-native
encuentre la identificación del proceso (PID) y elimine el proceso del empaquetador utilizando el comando
kill
(por ejemplo,
kill -9 [PID]
).
Debería encontrar la aplicación
launchPackager.command
en macOS, no estoy seguro acerca de los otros sistemas operativos.
Luego intente ejecutar
run-ios
(o android) nuevamente.
Debería poder ver la nueva ruta después de ejecutar el nuevo servidor de empaquetado, por ejemplo:
Looking for JS files in
/Users/afshin/Desktop/awesome-app
Mi solución es cambiar el nombre del módulo en "AppDelegate.m"
desde
moduleName:@"AwesomeProject"
a
moduleName:@"YourNewProjectName"
Modifique
MainActivity
esta manera,
@Override
protected String getMainComponentName() {
return "Bananas"; // here
}
Ninguna de las soluciones funcionó para mí. Tuve que matar el siguiente proceso y volví a ejecutar react-native run-android y funcionó.
nodo ./local-cli/cli.js inicio
Supongo que es un error causado por no coincidir el nombre del proyecto y su componente registrado.
Has iniciado un proyecto con un nombre, es decir
react-native init AwesomeApp
Pero en su archivo index.ios.js registra otro componente
AppRegistry.registerComponent(''Bananas'', () => Bananas);
Cuando debe ser
AppRegistry.registerComponent(''AwesomeApp'', () => Bananas);
Intenta arreglarlo.
Todas las respuestas dadas no funcionaron para mí.
Tenía otro proceso de nodo ejecutándose en otra terminal, cerré esa terminal de comando y todo funcionó como se esperaba.
Tuve el mismo problema y para mí la causa raíz fue que ejecuté (react-native start) el empaquetador desde otra carpeta react-native (AwesomeApp), mientras creaba otro proyecto en otra carpeta.
La ejecución del empaquetador desde el directorio de la nueva aplicación lo resolvió.
Verifique su archivo app.json en el proyecto. si no tiene la línea appKey, entonces debe agregarla
{
"expo": {
"sdkVersion": "27.0.0",
"appKey": "mydojo"
},
"name": "mydojo",
"displayName": "mydojo"
}
Yo tuve el mismo problema. Estaba usando Windows para crear una aplicación nativa de reacción para Android y estaba teniendo el mismo error. Esto es lo que funcionó.
- Navegue a la carpeta ANDROID en su raíz.
- Cree un archivo con el nombre: local.properties
- Ábrelo en el editor y escribe:
sdk.dir = C: / Users / USERNAME / AppData / Local / Android / sdk
- Reemplace USERNAME con el nombre de su máquina.
Guarde y ejecute la aplicación normalmente. Eso funcionó para mí.
necesita registrarlo en index.android.js / index.ios.js
Me gusta esto:
''use strict'';
import {
AppRegistry
} from ''react-native'';
import app from "./app";
AppRegistry.registerComponent(''test'', () => app);