Зарегистрируйте работника службы Firebase с существующим работником - PullRequest
0 голосов
/ 02 мая 2020

Я использую Google Workbox для некоторых автономных функций и кэширования в моем angular 9, приложении. Для сообщений pu sh мы используем Google Firebase .

. После обновления веб-приложения до Vue. js при доступе к веб-сайту появляется ошибка:

Uncaught FirebaseError: Messaging: Мы не можем зарегистрировать работника службы по умолчанию. Не удалось зарегистрировать ServiceWorker для области ('https://my-domain.com/firebase-cloud-messaging-push-scope') с помощью сценария ('https://my-domain.com/firebase-messaging-sw.js'): сценарий имеет неподдерживаемый тип MIME ('text / html) «). (сообщение / сбой-служба-регистрация работника).

Да, в каталоге root нет firebase-messaging-sw. js.
Все должно обрабатываться Workbox.

Я следовал документации, чтобы использовать существующего сервисного работника для регистрации с помощью функции useServiceWorker(), но это вызывает указанную ошибку.

import * as firebase from 'firebase/app';
import 'firebase/messaging';
import { Workbox } from 'workbox-window';
import { environment } from './environments/environment';

...

if ('serviceWorker' in navigator && environment.production) {
  const scope = window.location.origin + window.location.pathname.split('/').slice(0, 3).join('/');
  const wb = new Workbox('/my-worker.js', { scope: scope });

  wb.register().then(reg => {
    if (!firebase.apps.length) {
      firebase.initializeApp(environment.firebase);
    }
    if (firebase.messaging.isSupported()) {
      firebase.messaging().useServiceWorker(reg);
    }
    reg.update();
  }).catch(err => console.log(err));
}

Do Мне нужен firebase-messaging-sw. js?

...