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


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

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

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"
11 55

11 ответов:

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

  1. закройте терминал, порожденный React Native.
  2. полностью выключите XCode (возможно, это не требуется).
  3. снова открыть все и повторный запуск.

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

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

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

совпадает с @"AppName" на AppDelegate.m по вызову

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

это потому, что сервер react-native все еще наблюдает за старым. Сначала вам нужно закрыть сервер.

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

в терминале

ps aux | grep react

убить или pkill процесс, а затем

npm start

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

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

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

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

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

в случае, если у вас нет AppRegistry в области вы можете назвать это так React.AppRegistry.registerComponent или вы можете назначить его AppRegistry ВАР

var {
  AppRegistry
} = React;
AppRegistry.registerComponent('abc',() => ***); 

the 'abc' должно совпадать с moduleName:@'abc' в имя файла AppDelegate.m

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

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

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

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

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

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

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

../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,
        }, {

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

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

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

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

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


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

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

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

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

сообщение: инвариантное нарушение: приложение AwesomeProject не было зарегистрировано."

Я только что добавил REACT_EDITOR=atom on ~/.файл bashrc.