【发布时间】:2021-12-23 05:58:13
【问题描述】:
我有一个 react-create-app 应用程序,其中我使用 firebase 进行推送通知。最近我将 firebase 从 8.* 升级到了 9.*。在获取推送令牌时,它会抛出以下错误:
FirebaseError: Messaging: We are unable to register the default service worker. Failed to register a ServiceWorker for scope ('https://9fd5-49-204-137-92.ngrok.io/firebase-cloud-messaging-push-scope') with script ('https://9fd5-49-204-137-92.ngrok.io/firebase-messaging-sw.js'): The script has an unsupported MIME type ('text/html'). (messaging/failed-service-worker-registration).
在 firebase.js 中,我有以下代码集,会引发上述错误
import { initializeApp } from "firebase/app"
import { getToken, getMessaging, onMessage } from "firebase/messaging";
const message_key = "key"
var firebaseConfig = {
apiKey: "apikey",
authDomain: "authdomain",
projectId: "project-app",
storageBucket: "******.com",
messagingSenderId: "id",
appId: "appid",
measurementId: "mid"
};
const firebaseApp = initializeApp(firebaseConfig);
let messaging = getMessaging(firebaseApp);
if ("serviceWorker" in navigator) {
navigator.serviceWorker.register(process.env.PUBLIC_URL + "/firebase-messaging-sw.js")
.then(function(registration) {
console.log("Registration successful, scope is:", registration);
getToken({messaging, vapidKey: message_key})
.then((currentToken) => {
if (currentToken) {
console.log('current token for client: ', currentToken);
} else {
console.log('No registration token available. Request permission to generate one.');
}
}).catch((err) => {
console.log('An error occurred while retrieving token. ', err);
});
})
.catch(function(err) {
console.log("Service worker registration failed, error:", err);
});
}}
我该如何解决这个问题?
【问题讨论】:
标签: reactjs firebase firebase-cloud-messaging service-worker