Ионный эмулятор 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.