Подтвердить что ты не робот

React-Native: приложение не зарегистрировано

В настоящее время я прохожу учебники React-Native. Я начал с учебного пособия "Приступая к работе", в котором я создал новый собственный проект реагирования и успешно смог запустить проект на своем устройстве.

Затем я запустил учебник Props, скопировал фрагмент кода и снова попытался запустить проект, и на моем экране появилось следующее сообщение об ошибке:

4b9b3361

Ответ 1

Я предполагаю, что это ошибка, вызванная несоответствием имени проекта и зарегистрированного компонента.

Вы включили проект с одним именем, т.е.

react-native init AwesomeApp

Но в вашем файле index.ios.js вы регистрируете другой компонент

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

Когда это должно быть

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

Попробуйте исправить его.

Ответ 2

В большинстве случаев проблема заключается в том, что у вас есть другой сервер react-native start (например, React Native Packager), работающий либо на другом терминале, либо на другой вкладке TMUX (если вы используете TMUX).

Вам нужно найти этот процесс и закрыть его, поэтому, например, после запуска react-native run-ios он установит новый сервер упаковщика, зарегистрированный для этого конкретного приложения.

Просто найдите этот процесс, используя:

ps aux | grep react-native

найти идентификатор процесса (PID) и убить процесс упаковщика с помощью команды kill (например, kill -9 [PID]). Вы должны найти приложение launchPackager.command в macOS, не уверены в других операционных системах.

Затем попробуйте снова запустить run-ios (или android). Вы должны увидеть новый путь после запуска нового сервера упаковщика, например:

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

Ответ 3

Измените MainActivity следующим образом:

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

Ответ 4

Мое решение - изменить имя модуля в "AppDelegate.m"

из moduleName:@"AwesomeProject"

to moduleName:@"YourNewProjectName"

Ответ 5

Прежде всего, вы должны запустить свое приложение:

react-native start

Затем вы должны установить имя своего приложения в качестве первого аргумента registerComponent.

Он отлично работает.

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

Ответ 6

Пожалуйста, проверьте ваш файл app.json в проекте. если нет строки appKey, то вы должны добавить ее

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

Ответ 7

В моем случае есть эта строка в MainActivity.java, которая была пропущена, когда я использовал response react-native-rename cli (из NPM)

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

Очевидно, вы должны переименовать его в название вашего приложения.

Ответ 8

У меня была одна и та же проблема, и для меня основной причиной было то, что я запускал (реагировать на собственный запуск) упаковщик из другой связанной с пользователем папки (AwesomeApp), в то время как я создал другой проект в другой папке.

Запуск пакета из нового каталога приложений разрешил его.

Ответ 9

Я думаю, что сервер узла работает из другой папки. Так что убей его и запусти в текущей папке.

Найти работающий узел сервера: -

lsof -i :8081

Убить работающий узел сервера: -

kill -9 <PID>

Например:-

kill -9 1653

Запустить сервер узла из текущей собственной исходной папки: -

react-native run-android

Ответ 10

вам нужно зарегистрировать его в index.android.js/index.ios.js

как это:

'use strict';

import {
    AppRegistry
} from 'react-native';

import app from "./app";

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

Ответ 11

Это также может быть связано с тем, что имя корневого компонента начинается с нижнего регистра.

Восстановите его или скорее создайте проект еще раз с именем PascalCase.

например. зажечь новый HelloWord

Ответ 12

Все приведенные ответы не спомогли мне.

У меня был другой процесс узла, запущенный в другом терминале, я закрыл этот командный терминал, и все работало как ожидалось.

Ответ 13

Эта проблема также появится, когда в index.js вы назвали приложение не так, как вы назвали его для пакета android/ios; возможно, это произошло, когда вы выбросили приложение. Поэтому убедитесь, что при вызове AppRegistry.registerComponent('someappname',() => App) someappname также используется для собственных пакетов или наоборот.

Ответ 14

Вместо изменения имени в AppRegistry,

Запустите action-native init Bananas, это создаст реактивный шаблонный код для проекта Bananas, а AppRegistry.registerComponent автоматически укажет на бананы

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

Ответ 15

Ни одно из решений не сработало для меня. Я должен был убить следующий процесс и перезапустить реакционный родной запуск Android, и это сработало.

начало узла. /local-cli/cli.js

Ответ 16

У меня такая же проблема. Я использовал Windows для создания собственного приложения для Android, и у меня была та же ошибка. Вот что сработало.

  • Перейдите к папке ANDROID в вашем корне.
  • Создайте файл с именем: local.properties
  • Откройте его в редакторе и напишите:

sdk.dir = C:\Users\ИМЯ ПОЛЬЗОВАТЕЛЯ \ AppData\Local\Android\sdk

  • Замените USERNAME на имя вашей машины.

Сохраните и запустите приложение в обычном режиме. Это сработало для меня.

Ответ 17

Я выяснил, где проблема в моем случае (ОС Windows 10), но это может также помочь в Linux (вы можете попробовать).

В windows power shell, когда вы хотите запустить приложение (первый раз после загрузки ПК), выполнив следующую команду,

react-native run-android

Он запускает node process/JS server на другой console panel, и вы не столкнетесь с этой ошибкой. Но, когда вы хотите запустить другое приложение, вы должны необходимо закрыть, что уже работает JS server console panel. А затем выполните ту же команду для другого приложения из power shell, эта команда автоматически запустит другой новый сервер JS для этого приложения, и вы не столкнетесь с этой ошибкой.

Вам не нужно закрывать и снова открывать power shell для запуска другого приложения, вам нужно закрыть node console чтобы запустить другое приложение.

Ответ 18

Для меня ни один из ответов не сработал.

Ответ 19

После прочтения всего вышесказанного я обнаружил, что для этого может быть другая причина.

В моем случае:

response-native-cli: 2.0.1

реактивный: 0.60.4

и следующая структура:

enter image description here

Прежде всего следует отметить, что index.android не обновлялся в Android Studio при сборке, выполняемой Metro-компоновщиком (response-native run-android), поэтому это нужно делать вручную. Также в Android Studio не "читают"

app.json (создается по умолчанию вместе с index.js, который переименован в index.android.js):

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

и так это как

(в моем случае)

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

причина в том, что андроид студия не знает, на что ссылается authApp. Я исправляю на данный момент, ссылаясь на имя приложения с его именем строки и не используя это импорт из app.json:

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