首页 > 解决方案 > Firebase 已在全局范围内定义。请确保 Firebase 库只加载一次

问题描述

我在控制台中收到此警报 2 次,我检查了网络,在加载主页时,它注册了两个相同的事件,如图所示,一个和另一个之间的唯一区别是版本,一个是 6.6.1那是我目前拥有的,和7.15.4(我的项目中没有安装,也没有任何配置,我在整个项目中寻找它,它既不在package.json中也不在 lock.json 中,完全没有关于那个版本,我希望你停止向我显示那个警告而不是那个。

在此处输入图像描述

我调用firebase的唯一设置是这个文件

importScripts('https://www.gstatic.com/firebasejs/6.6.1/firebase-app.js');
importScripts('https://www.gstatic.com/firebasejs/6.6.1/firebase-messaging.js');

firebase.initializeApp({
messagingSenderId: "xxxxxxxxxxx"
});

const messaging = firebase.messaging();

console.log('Handling background message')
messaging.setBackgroundMessageHandler(function(payload) {
 console.log('Handling background message ', payload);

 return self.registration.showNotification(payload.data.title, {
    body: payload.data.body,
    icon: payload.data.icon,
    data: {
        click: payload.data.click,
        userId: payload.data.userId,
        pushId: payload.data.pushId,
    }
});
});

self.addEventListener('notificationclick', function(event) {
event.notification.close();
event.waitUntil(self.clients.openWindow(event.notification.data.click));
})

而这个,在 index.html 中

<script src="https://www.gstatic.com/firebasejs/6.6.1/firebase-app.js"></script>
<script src="https://www.gstatic.com/firebasejs/6.6.1/firebase-messaging.js"></script>  
<script>
    try {
        window
            .firebase
            .initializeApp({
                apiKey: "%REACT_APP_FIREBASE_ANALYTICS_API_KEY%",
                authDomain: "%REACT_APP_FIREBASE_ANALYTICS_AUTH_DOMAIN%",
                databaseURL: "%REACT_APP_FIREBASE_ANALYTICS_DATABASE_URL%",
                projectId: "%REACT_APP_FIREBASE_ANALYTICS_PROJECT_ID%",
                storageBucket: "%REACT_APP_FIREBASE_ANALYTICS_STORAGE_BUCKER%",
                messagingSenderId: "%REACT_APP_FIREBASE_ANALYTICS_MESSAGING_SENDER_ID%",
                appId: "%REACT_APP_FIREBASE_ANALYTICS_APP_ID%",
                measurementId: "%REACT_APP_FIREBASE_ANALYTICS_MEASUREMENT_ID%"
            })
    } catch (e) {
        console.error(e)
    }
</script>

标签: javascriptfirebase

解决方案


我不完全确定您是如何加载文件的,但是如果它们彼此独立,则两者

<script src="https://www.gstatic.com/firebasejs/6.6.1/firebase-app.js"></script>

importScripts('https://www.gstatic.com/firebasejs/6.6.1/firebase-app.js');

正在获取火力基地。如果两个文件都在使用,您应该只保留一个。


推荐阅读