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

"Инвариантное нарушение: приложение AwesomeProject не было зарегистрировано" При создании устройства iOS со статическим jsbundle

Во-первых, я не знаю, как реагировать, но я решил, что развертывание на устройстве iOS вместо симулятора не будет слишком сложным для работы с документами. Они были немного редки, но я где-то попал, и теперь я застрял. Я создал main.jsbundle и добавил его в проект Xcode и раскомментировал строку в AppDelegate.m.

Когда я его развертываю, я получаю эту ошибку:

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"
4b9b3361

Ответ 1

Я уверен, что исправление @krazyeom не имеет ничего общего с этой ошибкой. В моем случае я исправил это, оставив терминал, который был запущен из предыдущего тестового приложения, которое я выполнил. Кажется, терминал был сбит с толку и все еще был подключен к процессу, проект которого больше не загружался в XCode. Попробуйте следующее:

  • Закройте терминал, созданный React Native.
  • Полностью завершить XCode (может и не понадобиться).
  • Откроем все и заново запустите.

Ответ 2

Ваша проблема не должна иметь ничего общего с консолью, если вы правильно связали свой javascript в приложении ios, он не будет пытаться поговорить с dev-сервером, он просто получит javascript из пакета.

Из сообщения об ошибке я бы предположил, что вы, возможно, переименовали свой основной компонент. Убедитесь, что 'AppName' вы переходите в

AppRegistry.registerComponent('AppName' /* <- */, ... )

совпадает с @"AppName" на вашем AppDelegate.m при вызове

[[RCTRootView alloc] initWithBundleUrl:...
                            moduleName:@"AppName" // <-
                         launchOptions:...

Ответ 3

Это потому, что сервер, отвечающий за реакцию, все еще смотрит на старый. Сначала вам нужно закрыть сервер.

Вы можете просто убить процесс.

В терминале

ps aux | grep react

Убейте или выполните процесс, а затем

npm start

Ответ 4

AppRegistry определяет точку входа в приложение и предоставляет корневой компонент.

Ваш первый параметр не соответствует имени вашего проекта.

AppRegistry.registerComponent('AwesomeProject', () => YourMainComponent);

Первым параметром registerComponent должно быть ваше имя проекта, второй параметр - анонимная функция, возвращающая ваш компонент реакции root.

Если первый параметр не соответствует имени проекта xcode, вы получите эту ошибку, чтобы ваше приложение не было зарегистрировано.

Если у вас нет приложения AppRegistry в области, вы можете назвать это так React.AppRegistry.registerComponent или вы можете назначить его AppRegistry var

var {
  AppRegistry
} = React;

Ответ 5

AppRegistry.registerComponent('abc',() => ***); 

'abc' должен быть таким же, как moduleName:@'abc' в имени файла AppDelegate.m

Ответ 6

У меня была такая же проблема. Я решил это, указав одно и то же имя AppDelegate moduleName и AppRegistry.registerComponent

Если вы используете приложение с $ react-native run-ios, вам нужно будет переименовать поле moduleName в ./ios/[project name]/AppDelegate.m, чтобы соответствовать новому имени проекта. Обновите симулятор телефона, и он должен показать новый код.

Ответ 7

Вы изменили имя приложения, которое вы регистрируете? Я начал приложение с именем "tricky", а затем изменил имя в этой строке:

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

и я начал получать инвариантную ошибку.

Ответ 8

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

Все, что мне нужно было сделать, это мое окно терминала, я выполнил эту команду:

../lala/node_modules/react-native/packager/launchPackager.command ; exit; 

Мое имя проекта было "lala", поэтому найдите node_modules в своем проекте.

замените lala на название своего проекта, оно должно работать.

Если есть ошибка, говорит, что порт уже используется:

 ERROR  Packager can't listen on port 8081

Тогда у вас есть два варианта:

  • Убить уже запущенную программу.
  • Или измените порт, перейдя в: ../lala/node_modules/react-native/packager/packager.js, затем найдите номер порта, пример 8081, и замените номер порта, который не используется.
 var options = parseCommandLine([{
          command: 'port',
          default: 8082,
        }, {

Сохраните этот файл и снова запустите приведенную выше команду.

Таким образом, я могу запускать несколько реакций (ors).

Ответ 9

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

Ответ 10

Ссылка на безымянного человека.

он работает для меня.


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

Из всех моих исследований решение, которое сработало для меня, следующее:

  • Когда вы запускаете свое приложение, набрав "run-and-and-run run-android", появляется ошибка.
  • Итак, дойдите до вашего каталога, содержащего "adb.exe" (для меня это было C:\Users\username\AppData\Local\Android\Sdk\platform-tools\)
  • откройте терминал. И введите adb reverse tcp: 8081 tcp: 8081
  • Затем, перезагрузив приложение на телефоне, оно должно работать.

Ответ 11

Я получил аналогичное сообщение в консоли.

message: Invariant Violation: Приложение AwesomeProject не зарегистрировано.

Я просто добавил REACT_EDITOR=atom в файл ~/.bashrc.