Firebase - getToken() 抛出不受支持的 MIME 类型
Posted
技术标签:
【中文标题】Firebase - getToken() 抛出不受支持的 MIME 类型【英文标题】:Firebase - getToken() throws Unsupported MIME type 【发布时间】: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);
);
我该如何解决这个问题?
【问题讨论】:
【参考方案1】:将 firebase-messaging-sw.js 文件移动到公共目录解决了上述问题。
【讨论】:
以上是关于Firebase - getToken() 抛出不受支持的 MIME 类型的主要内容,如果未能解决你的问题,请参考以下文章
使用firebase推送通知中的onTokenRefresh与getToken有啥区别?
Firebase 云消息传递的 getToken() 仅在我省略 usePublicVapidKey 方法时才有效,为啥?
如果我在 requestPermission 之后立即调用 Firebase 的 getToken,我会在控制台中收到错误,为啥?
MissingPluginException(在通道 plugins.flutter.io/firebase_messaging 上找不到方法 getToken 的实现)
未处理的异常:MissingPluginException(在通道 plugins.flutter.io/firebase_messaging 上找不到方法 getToken 的实现)