Серия статей «Обучение и практика PWA» организована в видеgitbook — учебное пособие по PWA, текстовое содержимое было синхронизировано сlearning-pwa-ebook. При перепечатке просьба указывать автора и источник.
Эта статья«Обучение и практика PWA»Четвертый в серии. Это проблема, с которой я столкнулся при тестировании других демонстраций, и это устранение неполадок.
Как одна из самых популярных технических концепций в настоящее время, PWA имеет большое значение для повышения безопасности, производительности и удобства веб-приложений, и она очень достойна нашего понимания и изучения. Друзья, интересующиеся PWA, могут обратить внимание на серию статей "PWA Learning and Practice".
введение
в предыдущем посте«Как сделать ваше веб-приложение доступным в автономном режиме»В , мы используем Service Worker для кэширования и автономной поддержки. Есть важный вопрос:Service Worker должен работать по протоколу HTTPS (или локальному хосту).. Конечно, для некоторых демонстраций, которые имеют только интерфейсные ресурсы (не связанные с серверными службами), мы можем разместить эти интерфейсные (статические ресурсы) в службе HTTPS, чтобы Service Worker мог их использовать. я выбрал гуглFireBaseРазместить демонстрацию (на самом деле, страница github также является хорошим выбором).
Использовать FireBase очень просто, нужно толькоfirebase login
-->firebase init
-->firebase deploy
Вот и все. Но когдаfirebase login
В процессе возникли некоторые проблемы. Эта статья в основном суммирует моиfirebase login
Возникшие проблемы и решения:
- Не удалось получить код авторизации
Authentication Error: Your credentials are no longer valid.
Нуждающиеся друзья могут продолжать смотреть.
Во-первых, если вы ничего не знаете о firebase, вот очень краткое введение.
Что такое FireBase
Я изучил PWA некоторое время назад, и после официального руководства по завершению демо-версии я хочу проверить эффект на своем мобильном телефоне. Однако есть одна проблема: для PWA требуется протокол HTTPS (или используйте localhost).
Для этого нам нужно иметь службу HTTPS и развернуть на ней нашу локально написанную демонстрацию. В конце официальной демонстрации рекомендуется использовать firebase для размещения вашего кода.
Среди многих сценариев использования FireBase мне нужно использовать «Разработка -> Хостинг». Однако при выполненииfirebase login
(Вход в учетную запись), но возникли некоторые проблемы.
Вопрос 1: После входа в аккаунт в браузере нет ответа (невозможно получить код авторизации)
Сначала я набрал в CLIfirebase login
,выберитеy
После этого CLI потребует код авторизации, а браузер откроется и предложит авторизоваться.
Здесь я использую учетную запись Google для авторизации входа в систему. Однако после авторизации нет ответа (не в состоянии получить код авторизации). В это время я обнаружил, что браузер показал, что казалось, что ждалlocalhost
Реагировать.
Решение этой проблемы: при входе используйтеfirebase login --no-localhost
чтобы залогиниться.
повторное использованиеfirebase login --no-localhost
Авторизоваться. Здесь я выбираю учетную запись Google для входа и повторяю описанный выше процесс:
На этот раз вы получите строку значений кода авторизации в браузере:
Вставьте его в CLI. [Вопрос 1] Решено!
Вопрос 2: Ошибка: Ошибка аутентификации: Ваши учетные данные больше не действительны.
Однако, после ввода кода авторизации в CLI, после длительного ожидания проверки, в CLI сообщается следующая ошибка:
Что тут происходит? Изучив некоторую информацию, выяснилось, что это, вероятно, вызвано использованием инструмента «через стену» на вашем компьютере. В пакете npm (faye-websocket), от которого зависит firebase-tool, настройки прокси не включены, поэтому проверку выполнить невозможно.
Есть два способа решить эту проблему:
Способ 1: настройте прокси на роутере, а не на машине
В некоторых статьях указано, что этой проблемы можно избежать, установив прокси на роутере, а не включив его локально. Однако по некоторым причинам этот метод еще не опробован, но, по некоторым отзывам, он должен быть эффективным.
Способ 2: (взломать) изменить код и связанные переменные среды
Этот метод немного «сложнее», чем первый. Конкретный метод работы заключается в следующем:
- Установить переменные среды
http_proxy
, мой локальный прокси использует порт 1087.export http_proxy=http://localhost:1087
- Измените faye-websocket и включите конфигурацию прокси. faye-websocket — это библиотека WebSocket, от которой зависит firebase.Вам нужно добавить следующую конфигурацию в его client.js:
var Client = function(_url, protocols, options) {
options = options || {};
// 添加proxy配置
options.proxy = {
origin: 'http://localhost:1087',
};
…
}
Если вы установили firebase-tools глобально, вы можете найти client.js следующим образом.
NODE_PATH=`npm prefix -g`
// client.js的位置
$NODE_PATH/lib/node_modules/firebase-tools/node_modules/firebase/node_modules/faye-websocket/lib/faye/websocket/client.js
-
Установите переменную среды NODE_TLS_REJECT_UNAUTHORIZED.
export NODE_TLS_REJECT_UNAUTHORIZED=0
-
перерегистрировать,
firebase login --no-localhost
, повторите предыдущую операцию. Вы обнаружите, что вход в систему выполнен успешно!
【Вопрос 2】Решено!
p.s. На гитхабе тоже есть тема по этому поводу:Unable to deploy behind a proxy.
Кроме того, если вы используете прокси, рекомендуется использовать глобальный прокси, чтобы ваш CLI также использовал прокси.
напиши в конце
Наконец, вернемся к моим потребностям при разработке PWA. Как упоминалось в начале статьи, я использовал FireBase для размещения ресурсов, чтобы проверить влияние демонстрации PWA на мобильную сторону. Разумеется, помимо FireBase есть еще два следующих метода:
-
Используйте страницу github. Так как github вся станция работает под HTTPS, и поэтому на статическом сайте страницы github вы можете использовать Service Worker;
-
Используйте локальный хост/127.0.0.1. Если вы разбираетесь в PWA, то будете знать, что помимо HTTPS вы также можете использовать localhost (это сделано для облегчения локальной отладки).
Эта статья«Обучение и практика PWA»Четвертый в серии. В этой статье не рассматривается реальная технология PWA, а описывается процесс разработки, отладки P и проблемы, с которыми я столкнулся. Некоторые друзья также могут столкнуться с подобными проблемами, поэтому записывайте их и делитесь ими с вами.
В следующей статье мы вернемся к технологии PWA, чтобы понять,Как использовать Push API для отправки сообщений от серверных служб клиентам.
Серия статей "Обучение и практика PWA"
- Первая статья: 2018 год, начните свое обучение PWA
- Часть 2. Научитесь использовать Manifest за 10 минут, чтобы сделать ваше веб-приложение более "нативным"
- Часть 3. С сегодняшнего дня сделайте свое веб-приложение доступным в автономном режиме
- Часть 4. Устранение неполадок: решение проблемы с ошибкой аутентификации при входе в FireBase (эта статья)
- Часть 5. Оставайтесь на связи с вашими пользователями: функции Web Push
- Часть 6. Отладка PWA в Chrome
- Часть 7. Расширенное взаимодействие: использование API уведомлений для напоминаний
- Часть 8. Использование Service Worker для фоновой синхронизации данных
- Часть 9: Проблемы и решения в практике PWA
- Часть 10. Подсказка по ресурсам. Улучшите производительность и удобство загрузки страниц.
- Статья 11. Изучение различных офлайн-стратегий с помощью набора инструментов для работы в офлайн-режиме PWA (написание...)