Сейчас работаю с firebase 8 файл firebase-messaging-sw.js
importScripts("https://www.gstatic.com/firebasejs/8.10.0/firebase-app.js");
importScripts("https://www.gstatic.com/firebasejs/8.10.0/firebase-messaging.js");
// https://firebase.google.com/docs/web/learn-more
// Initialize the Firebase app in the service worker by passing in the
// messagingSenderId.
firebase.initializeApp({});
// Retrieve an instance of Firebase Messaging so that it can handle background
// messages.
const messaging = firebase.messaging();
messaging.setBackgroundMessageHandler(function(payload) {
let options = {
body: payload.data.body,
icon: payload.data.icon
}
let user = localStorage.getItem('VAFUserId'),
data = JSON.parse(payload.data['gcm.notification.data']);
// Search by hash
if(data.users.find(el => el == user)) {
return self.registration.showNotification(payload.data.title, options);
}
});
Всё прекрасно работает, соответственно вышла 9 версия, где они предлагают делать всё через import
// JavaScript Document
import { initializeApp } from 'https://www.gstatic.com/firebasejs/9.1.3/firebase-app.js';
import { getMessaging, onBackgroundMessage } from 'https://www.gstatic.com/firebasejs/9.1.3/firebase-messaging-sw.js';
const firebaseApp = initializeApp({
});
const messaging = getMessaging(firebaseApp);
onBackgroundMessage(messaging, (payload) => {
let options = {
body: payload.data.body,
icon: payload.data.icon
}
let user = localStorage.getItem('VAFUserId'),
data = JSON.parse(payload.data['gcm.notification.data']);
// Search by hash
if(data.users.find(el => el == user)) {
return self.registration.showNotification(payload.data.title, options);
}
});
При регистрации воркера получаю следующую ошибку: "Uncaught SyntaxError: Cannot use import statement outside a module"
В самом html для работы с уведомлениями я подключил файлик с парамтером script type="module", а как быть с файлом firebase-messaging-sw.js который оежит в корне - непонятно.
Приложение не синглпэйдж, а на PHP. Подскажите как можно решить данную проблему или оставаться на 8 версии?