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

105

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

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

Изображение 164

  • 0
    Можете ли вы поделиться своим кодом?
Теги:
react-native
facebook

18 ответов

305
Лучший ответ

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

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

react-native init AwesomeApp

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

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

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

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

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

  • 5
    "Бананы" кое-как работают на андроид. Но это не на IOS.
  • 85
    Для кого-то, кто сталкивается с той же проблемой, даже если имя компонента совпадает -> Убедитесь, что у вас не запущен какой-либо другой реактивный процесс / процесс узла в другом терминале.
Показать ещё 12 комментариев
35

В большинстве случаев проблема заключается в том, что у вас есть другой сервер 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 
  • 1
    спасибо человек, это решение сработало для меня;)
  • 0
    Это работает, даже если я запускаю react-native start --port <otherport> , я должен запустить react-native start --port <otherport> react-native run-<platform> по-другому ?, спасибо
Показать ещё 2 комментария
19

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

@Override
protected String getMainComponentName() {
    return "Bananas"; // here
}
  • 0
    ИМЕННО ТАК! это было именно то, что было моей проблемой, хотя вместо того, чтобы изменить это, я изменил AppRegistry.registerComponent к этому
  • 0
    что насчет Иоса?
Показать ещё 2 комментария
12

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

react-native start

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

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

AppRegistry.registerComponent('YourProjectName', () => YourComponentName);
  • 0
    спасибо, ваш ответ решит мою проблему.
9

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

из moduleName:@"AwesomeProject"

to moduleName:@"YourNewProjectName"

  • 0
    Спасибо .. работает на меня.
  • 0
    Это исправило мою проблему. Спасибо!
Показать ещё 1 комментарий
5

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

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

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

3

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

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

2

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

{
  "expo": {
    "sdkVersion": "27.0.0",
    "appKey": "mydojo"
  },
  "name": "mydojo",
  "displayName": "mydojo"
}
  • 1
    Вмешивался в эту ошибку в течение последних 24 часов. Это исправило мою проблему. Спасибо!
2

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

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

lsof -i :8081

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

kill -9 <PID>

Например:-

kill -9 1653

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

react-native run-android

1

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

1

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

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

1

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

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

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

1

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

как это:

'use strict';

import {
    AppRegistry
} from 'react-native';

import app from "./app";

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

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

0

Я выяснил, где проблема в моем случае (ОС 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 чтобы запустить другое приложение.

0

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

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

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

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

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

0

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

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

  • 0
    какие последующие процессы?
0

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

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

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

Ещё вопросы

Сообщество Overcoder
Наверх
Меню