Firebase:firebase.messaging()不是一个函数

我正在尝试从FCM设置NodeJS Client Web App 。 我已经在服务器端设置了firebase-admin 。 设置客户端访问令牌时,我得到一个TypeError: firebase.messaging is not a function错误。 从其他解决scheme看来,似乎是不同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> 

另请注意,4.2.0中的最新版本的Web客户端。 你在一个旧版本。