Статьи

Предупреждение об Ionic Live Reload и приложении PhoneGap Developer

Этим утром я столкнулся со странной проблемой с тем, что должно было быть относительно простым кодом. Я работаю над набором демонстраций с использованием  Ionic  и  Cordova,  которые демонстрируют конкретный вариант использования камеры. Во время тестирования я заметил, что не вижу изображения, которое выбрал из галереи.

Сначала я подумал, что это проблема Angular (хорошо, они называют это функцией, и я получаю обоснование, но я называю это ошибкой, и я счастлив, что ошибаюсь), где библиотека будет блокировать вас от введения потенциально опасного вещи в DOM. Исправить это довольно просто — просто добавьте регулярное выражение в imgSrcSanitizationWhitelist:

$compileProvider.imgSrcSanitizationWhitelist(/^\s*(https?|ftp|mailto|content|file|assets-library):/);

Однако это не сработало. Я тестировал с iOS, поэтому я быстро переключился на Android и проверил там. Я заметил, что у меня была такая же проблема.

В этот момент я ударил кирпичную стену. Я использовал камеру несколько раз , прежде чем с Кордовой , поэтому я предположил , что это  должно  был угловым вопросом. Затем я попробовал  основную  демонстрацию камеры из репозитория Cordova examples — приложения, которое я создал некоторое время назад и которое было настолько простым, насколько это возможно, —  и это тоже не получилось!

Во время тестирования, я отладка, конечно, и я заметил эту ошибку в консоли:  Not allowed to load local resource. Это то, что изначально напомнило мне использовать настройку очистки в Angular, но я видел это и в моем неангулярном примере.

Затем я сделал еще  один  тест. Во время тестирования я использовал функцию прямой перезагрузки Ionic. По какой-то прихоти я остановился и переключился на то, чтобы просто делать  cordova emulate ios… и это сработало. Затем я понял, кто виноват — перезагрузка в прямом эфире.

При использовании прямой перезагрузки вы фактически запускаете ресурсы с компьютера, а не с устройства. Это означает, что URI, возвращаемые плагином камеры, ссылаются на URI на компьютере,  который не существует .

Чтобы убедиться, что это проблема, я также протестировал  приложение PhoneGap Developer  и у меня возникла точно такая же проблема. Это имеет смысл, но определенно немного облом, если вам нужно протестировать что-либо, касающееся файловой системы. В моем конкретном случае использования я  мог бы  перейти на использование изображений base64, но я собираюсь избегать этого, поскольку это обычно не рекомендуется.

Чтобы было ясно, я не предлагаю избегать этих функций. Ионный поживет Reload является бесконтрольным полезно как ад, и PhoneGap Developer App является  номер один  способом теста PhoneGap / Кордове быстро (и будет то , что я использую в презентациях в будущем), но вы хотите , чтобы помнить эти вопросы при тестировании. Я открыл  ER  для Ionic CLI, чтобы предупредить пользователей об этом, и я был бы признателен людям (за или против), если вы являетесь пользователем Ionic.