Ионный эмулятор ios работает только с --livereload
У меня есть простое ионное приложение, которое я создаю, и когда я тестирую ionic serve --lab
, все выглядит великолепно, однако, когда я пытаюсь подражать на симуляторах с помощью ionic emulate ios
или ionic emulate android
, приложение doesn ' t (похоже, что все JS не проходит). Я могу прикрепить отладчик, и нет никаких консольных ошибок.
Но, когда я пытаюсь запустить приложение с ionic emulate ios --livereload
, все работает нормально.
Я попробовал еще одно примерное приложение с нуля, чтобы исключить мой компьютер env, и он работал нормально.
Любые идеи о том, как я могу заставить эмулировать работать без --livereload?
Ответы
Ответ 1
У меня была такая же проблема сегодня. Я разрешил его, удалив определенные зависимости angular, которые не были обнаружены в ios build. Проверьте jslint на наличие любых предупреждений, которые могут предоставить дополнительную информацию о том, какие зависимости могут быть введены неправильно или отсутствуют.
Для получения дополнительной информации см. этот комментарий на форумах Ionic.
Ответ 2
1. Найти ошибки
Начните свою эмуляцию следующим образом
$ ionic emulate android -l -c
Это будет эмулировать журнал с записью в режиме "назад" и на консоль.
Теперь вы должны увидеть, что вызывает ошибку, зарегистрированной в терминале.
2. Отсутствует плагин "Белый список Кордовы"?
Часто отсутствует отсутствующий плагин Whitelist Cordova. Поскольку вы можете читать здесь, просто выполните следующие шаги, чтобы заставить этот плагин работать.
$ ionic plugin add https://github.com/apache/cordova-plugin-whitelist.git
если он еще не добавлен.
откройте config.xml
внутри корня проекта и добавьте эту строку в тег <widget>
.
<allow-navigation href="*" />
Ответ 3
В моем случае белый экран смерти был вызван плохими ссылками на компоненты башни.
Для нашего процесса сборки относительное расположение компонентов bower отличается от "источника" по сравнению с тем, когда приложение было упаковано на "www" (компоненты bower скопированы в корневой каталог).
Следующая ссылка работает, когда приложение обслуживается (если вы наводите курсор на ссылки в инспекторе Chrome, ".." удаляется), но не работают при запуске на устройстве/эмуляторе:
<script src="../bower_components/angular/angular.js"></script>
Живая перезагрузка работает, потому что приложение не подается из файловой системы устройства. Вместо этого Ionic обслуживает его с главной машины, и, по-видимому, плохой относительный путь ( ".." ) игнорируется, так как он проверяется в браузере.
Фиксирование путей следующим образом разрешено в задаче:
<script src="bower_components/angular/angular.js"></script>
Непостижимый вопрос в том, почему никакие видимые ошибки не бросаются никаким компонентом приложения.
Ответ 4
В моем случае проблема была вызвана наличием <base href="/">
в моем index.html, что не мешало Ionic находить локально размещенные файлы (через --livereload), но полностью помешало Ionic находить файлы внутри входящего в комплект iOS или приложения для Android.