Проблема не в Firebase как таковой. Ваше сообщение об ошибке говорит о том, что сервер gstatic.com не предоставляет заголовки CORS для этого ресурса. Без этого заголовка CORS рабочая коробка не сможет проверять ответы для этого ресурса. Это делает кэширование очень трудным.
Здесь обсуждается, что вы пытаетесь сделать здесь (предварительное кэширование из CDN) на проблема GitHub для рабочей коробки. Соответствующее предложение звучит так:
Одна сложность заключается в том, что это должно работать только в том случае, если CDN поддерживает CORS, поскольку предварительное кэширование непрозрачных ответов и их первичное кэширование не рекомендуется.
Рабочий документ doco рассказывает больше об этой проблеме кэширования и непрозрачных ответов:
Этот ответ кеширует непрозрачный ответ и обслуживает его с этого момента. Проблема заключается в том, что если этот запрос по какой-либо причине завершится неудачно, Workbox не сможет обнаружить это и продолжит обслуживать неполный ответ. Пользователь будет в неисправном состоянии.
В вашем случае, , если , вы можете заставить рабочий ящик кэшировать ресурсы из CDN (я не думаю, что вы можете), тогдаесть вероятность, что он кеширует ответ об ошибке или, по крайней мере, рабочий ящик не будет знать, когда будет доступна новая версия ресурса, потому что он не может проверить ответ.
Опция 1
Если вы используете что-то вроде веб-пакета для объединения вашего кода, то вы можете не использовать CDN, а вместо этого связать код firebase с вашим приложением. Вы можете посмотреть на использование инструмента сборки для автоматического создания манифеста предварительного кэша.
Опция 2
Удалите эти атрибуты crossorigin="anonymous"
из тегов <script>
в вашем htmlфайл. А затем удалите эти три нижних элемента из вашего манифеста предварительного кэша (для gstatic.com/firebase ...). Это означает, что вам не понадобятся заголовки CORS, но также, что эти файлы не будут предварительно кэшироваться в смысле PWA. Они по-прежнему должны кэшироваться вашим браузером, поэтому, надеюсь, они все еще будут работать.
Кстати, я также разрабатываю PWA с использованием Onsen: D