2017-09-05 283 views
1

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

<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 
+0

Firebase是否加載? –

+0

是的,是的。我用'console.log(firebase);'得到一個對象。但它沒有'messaging()'函數。我會在問題中補充一點。 – ashwinx

回答

0

它看起來像你沒有按照從documentation基本整合步驟。有一個包括消息:

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

還要注意的是,在4.2.0最新版本的Web客戶端的。你在一箇舊版本。

+0

我有,我發佈的HTML文件是從文檔。就像我說的,這可能是版本衝突,我會嘗試這個並回來。謝謝。 – ashwinx

+0

你指的是什麼文件?我展示的是規範的。官方Firebase文檔不顯示舊版本的內容。 –

+0

另外請注意,我已經包含「firebase-messaging.js」,而不僅僅是「firebase.js」。 –