While trying to fetch the FCM messages in node.js using firebase module, following error "TypeError: firebase.messaging is not a function" is occurring.
var firebase = require("firebase");
firebase.initializeApp({
apiKey: "xxxxxxx",
authDomain: "xxxxxxx",
databaseURL: "xxxxxxx",
projectId: "xxxxxxx",
storageBucket: "xxxxxxx",
messagingSenderId: "xxxxxxx"
});
const messaging = firebase.messaging();
How to rectify this error and how to use firebase module to pull messages??
You must included import '@firebase/messaging'
for it to work. So it's supposed to look like this:
import * as firebase from 'firebase/app';
import '@firebase/messaging';
The criteria you are trying to use only works on the browser:
You have to require firebase-messaging
, check this full sample it will guide youhttps://github.com/firebase/quickstart-js/tree/master/messaging
For nodeJS implementation, you have to use admin.messaging
https://firebase.google.com/docs/reference/admin/node/admin.messaging
// Get the Messaging service for the default app
var defaultMessaging = admin.messaging();
The documentation for Firebase does not make it clear that there is a difference of features available based on the current environment. firebase.messaging
is not available to a Node.js client, but is available from the firebase-admin
package. However, this package alone comes with a different set of features specfically for firebase.messaging
.
You can see what's available to you based on your environment in the Firebase Reference docs. Specifically for your case the Node.js (Client) section.
react-native-firebase version 5.xx and 6.xx
import firebase from '@react-native-firebase/app'
import '@react-native-firebase/messaging'
for example get token
const fcmToken = await firebase.messaging().getToken();
console.log(fcmToken)
In my case was that I was importing firebase only as
import '@firebase/app'
instead of
import * as firebase from '@firebase/app'
after formatting it, I was able to access messaging from firebase.firebase.messaging()
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.