簡體   English   中英

Firebase:firebase.messaging() 不是函數

[英]Firebase: firebase.messaging() is not a function

我正在嘗試從FCM設置NodeJS Client Web App 我在服務器端設置了firebase-admin 在設置客戶端以訪問令牌時,我收到TypeError: firebase.messaging is not a function錯誤。 從其他解決方案來看,不同 FCM 版本之間似乎存在兼容性錯誤,但仍然可以修復它。 下面是我正在使用的 html 文件

<html>

<head>
    <script src="https://www.gstatic.com/firebasejs/3.1.0/firebase.js"></script>


</head>

<body>

  <script>
    console.log(firebase);

    const messaging = firebase.messaging();
    messaging.onTokenRefresh(function () {
      messaging.getToken()
        .then(function (refreshedToken) {
          console.log('Token refreshed.');
          console.log(refreshedToken);
          // // Indicate that the new Instance ID token has not yet been sent to the
          // // app server.
          // setTokenSentToServer(false);
          // // Send Instance ID token to app server.
          // sendTokenToServer(refreshedToken);
          // // [START_EXCLUDE]
          // // Display new Instance ID token and clear UI of all previous messages.
          // resetUI();
          // // [END_EXCLUDE]
        })
        .catch(function (err) {
          console.log('Unable to retrieve refreshed token ', err);
          // showToken('Unable to retrieve refreshed token ', err);
        });
    });
  </script>
</body>

</html>

如何在客戶端正確設置 firebase? 編輯: console.log(firebase)給出:

SDK_VERSION: "3.1.0", initializeApp: ƒ, app: ƒ, Promise: ƒ, …}
INTERNAL:{registerService: ƒ, createFirebaseNamespace: ƒ, extendNamespace: ƒ, createSubscribe: ƒ, ErrorFactory: ƒ, …}
Promise:ƒ Promise()
SDK_VERSION : "3.1.0"
User:ƒ (a,b,c)
app:ƒ a(a)
apps:(...)
auth:ƒ (c)
database:ƒ (c)
initializeApp:ƒ (a,c)
storage:ƒ (c)
get apps:ƒ ()
__proto__
:
Object

看起來您沒有遵循文檔中的基本集成步驟。 有一個用於消息傳遞的包含:

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

另請注意,Web 客戶端的最新版本為 4.2.0。 您使用的是舊版本。

您需要在html文件中包含firebase-app.jsfirebase-messaging.js

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

嘗試替換import 'firebase/messaging'; 使用import 'firebase/compat/messaging';

它對我有用

我正在嘗試從FCM設置NodeJS Client Web App 我在服務器端設置了firebase-admin 在設置客戶端以訪問令牌時,我收到TypeError: firebase.messaging is not a function error。 從其他解決方案來看,似乎是不同 FCM 版本之間的兼容性錯誤,但仍然可以修復它。 下面是我正在使用的 html 文件

<html>

<head>
    <script src="https://www.gstatic.com/firebasejs/3.1.0/firebase.js"></script>


</head>

<body>

  <script>
    console.log(firebase);

    const messaging = firebase.messaging();
    messaging.onTokenRefresh(function () {
      messaging.getToken()
        .then(function (refreshedToken) {
          console.log('Token refreshed.');
          console.log(refreshedToken);
          // // Indicate that the new Instance ID token has not yet been sent to the
          // // app server.
          // setTokenSentToServer(false);
          // // Send Instance ID token to app server.
          // sendTokenToServer(refreshedToken);
          // // [START_EXCLUDE]
          // // Display new Instance ID token and clear UI of all previous messages.
          // resetUI();
          // // [END_EXCLUDE]
        })
        .catch(function (err) {
          console.log('Unable to retrieve refreshed token ', err);
          // showToken('Unable to retrieve refreshed token ', err);
        });
    });
  </script>
</body>

</html>

如何在客戶端正確設置firebase? 編輯: console.log(firebase)給出:

SDK_VERSION: "3.1.0", initializeApp: ƒ, app: ƒ, Promise: ƒ, …}
INTERNAL:{registerService: ƒ, createFirebaseNamespace: ƒ, extendNamespace: ƒ, createSubscribe: ƒ, ErrorFactory: ƒ, …}
Promise:ƒ Promise()
SDK_VERSION : "3.1.0"
User:ƒ (a,b,c)
app:ƒ a(a)
apps:(...)
auth:ƒ (c)
database:ƒ (c)
initializeApp:ƒ (a,c)
storage:ƒ (c)
get apps:ƒ ()
__proto__
:
Object

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM