"Инвариантное нарушение: приложение 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"
Ответы
Ответ 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.