具有Firebase托管功能的Firebase消息传递未正确初始化

时间:2020-04-10 12:05:45

标签: firebase firebase-cloud-messaging firebase-hosting

我正在使用Firebase托管服务Web应用程序。使用自动初始化时,Firebase通常可以正确初始化。

<!DOCTYPE html>
<html>
  <head>
    <!-- Some stuff -->
  </head>
  <body>
    <!-- Some stuff -->
  </body>
  <script src="/__/firebase/7.13.2/firebase-app.js"></script>

  <script src="/__/firebase/7.13.2/firebase-auth.js"></script>
  <script src="/__/firebase/7.13.2/firebase-messaging.js"></script>
  <script src="/__/firebase/7.13.2/firebase-storage.js"></script>

  <script src="/__/firebase/init.js"></script>
  <script>
    firebase.auth().signInAnonymously().catch(function(error) {
      // Works fine
    });

    firebase.auth().onAuthStateChanged(function(user) {
      // Works fine
     });
</html>

因此在上面的最小示例中,我可以使用auth和存储,但是添加对消息传递的调用失败。

const messaging = firebase.messaging();

相关的错误消息是:

未捕获的FirebaseError:消息传递:缺少应用程序配置值:“ appId”(消息/缺少应用程序配置值)。

我理解该错误消息,但是对我来说很奇怪的一点是,使用Firebase Hosting并调用<script src="/__/firebase/init.js"></script>时,通常通常会正确初始化Firebase SDK。对于Firebase消息传递SDK,情况似乎并非如此。当我忽略此呼叫并使用firebase.initializeApp(firebaseConfig);自己初始化Firebase应用程序时,Firebase消息传递SDK正确初始化了,我可以使用它。

我想避免自己初始化Firebase应用程序,因为我认为Firebase托管应该照顾好它。我缺少针对Firebase消息传递SDK的特定步骤吗?我找不到以下任何https://firebase.google.com/docs/cloud-messaging/js/client

1 个答案:

答案 0 :(得分:0)

我发现/__/firebase/init.js的内容直到您实际经历adding a web app to your project的过程(尤其是步骤2)时才包含所有消息传递信息。仅部署代码是不够的到Firebase托管。