Reputation: 115
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??
Upvotes: 9
Views: 21513
Reputation: 216
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()
Upvotes: 0
Reputation: 18803
react-native-firebase version 5.x.x and 6.x.x
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)
Upvotes: 0
Reputation: 221
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';
Upvotes: 22
Reputation: 22952
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.
Upvotes: 3
Reputation: 10906
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 you https://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();
Upvotes: 3