1

我正在尝试将我的反应应用程序与 Firebase 集成以实现推送通知。我的 src 文件夹中有这个包含所有配置的文件:

import firebase from 'firebase/app';
import 'firebase/messaging';

const config = {
    apiKey: "API_KEY",
    authDomain: "MY_DOMAIN",
    databaseURL: "DATABASE_URL",
    projectId: "PROJECT_ID",
    storageBucket: "STORAGE_BUCKET",
    messagingSenderId: "SENDER_ID",
    appId: "APP_ID",
    measurementId: "MEASURE_ID"
};

firebase.initializeApp(config);
const messaging = firebase.messaging();

export const requestFirebaseNotificationPermission = () =>
    new Promise((resolve, reject) => {
        messaging
            .requestPermission()
            .then(() => messaging.getToken())
            .then((firebaseToken) => {
                resolve(firebaseToken);
            })
            .catch((err) => {
                reject(err);
            });
    });

export const onMessageListener = () =>
    new Promise((resolve) => {
        messaging.onMessage((payload) => {
            resolve(payload);
        });
    });

而且,这是我如何实现使推送通知在我的 App.js 中工作的功能:

 // Load the FCM configuration parameters and activate the push notifications through the app
        requestFirebaseNotificationPermission()
            .then((firebaseToken) => {
                // eslint-disable-next-line no-console
                console.log("CHECK_FCM_TOKEN", firebaseToken);
                this.setState({ fcmToken: firebaseToken })
            })
            .catch((err) => {
                return err;
            });

这是我经常遇到的错误,长期以来我一直没有解决方案: 在此处检查错误屏幕截图

如果有任何帮助来解决这个问题,我将不胜感激。

4

1 回答 1

0

我有类似的问题。问题是我没有正确加载服务工作者文件。

将您的服务工作人员文件放在公用文件夹中并尝试访问它。例如:我的服务工作者文件(firebase-messaging-sw.js)被放置在公共文件夹中。所以如果我打开 http://localhost:3000/firebase-messaging-sw.js 我可以查看 js 文件。

在 react 尝试获取此文件并返回一个 html(默认索引页面)文件并导致返回 MIME 类型错误之前。

于 2020-10-01T14:52:42.337 回答