缺少应用程序配置值:“projectId”即使我正在传递它

Jef*_*f I 6 javascript firebase google-cloud-messaging

我可以很好地发送、查看和点击网络通知,而且没有任何问题。但是当我点击通知时控制台会产生这个

Uncaught FirebaseError: Messaging: Missing App configuration value: "projectId" (messaging/missing-app-config-values).
Run Code Online (Sandbox Code Playgroud)

projectId 肯定会传递给配置

Chrome 版本:版本 79.0.3945.130(官方版本)(64 位)

这是我配置firebase的方式:

var messaging;
if( firebase.messaging.isSupported() ){

    var config = {
      apiKey: "*************",
      authDomain: "*************",
      databaseURL: "*************",
      projectId: "*************",
      storageBucket: "*************",
      messagingSenderId: "*************",
      appId: "*************"
    };
    firebase.initializeApp(config);
    messaging = firebase.messaging();
    messaging.usePublicVapidKey("*************");
    messaging.onMessage(function(payload) {
        ...
        ...
    }
}
Run Code Online (Sandbox Code Playgroud)

还有我的 firebase-messeging-sw.js:

self.addEventListener('notificationclick', function(event) {
    ...
    ...
}
importScripts('https://www.gstatic.com/firebasejs/7.8.2/firebase-app.js');
importScripts('https://www.gstatic.com/firebasejs/7.8.2/firebase-messaging.js');

firebase.initializeApp({'messagingSenderId': '***********'});

const messaging = firebase.messaging();

messaging.setBackgroundMessageHandler(function(payload) {
    ...
});
Run Code Online (Sandbox Code Playgroud)

有任何想法吗?

Dou*_*son 6

您必须initializeApp() 调用任何其他 Firebase API之前调用。您的代码首先调用firebase.messaging.isSupported()before initializeApp()。看起来您可能只想在 FCM 正常工作时初始化 Firebase,但这根本不受支持。我建议无条件初始化 Firebase。如果您实际上不使用任何 Firebase 产品,那么这样做的成本非常低。