9

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??

5 Answers 5

22

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';
Sign up to request clarification or add additional context in comments.

Comments

3

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();

1 Comment

My idea is to create node app which will receive notification from fcm without any browser interaction. I was trying these methods var firebase = require("firebase/messaging"); which is not working.
3

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.

Comments

0

For 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)

Comments

0

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()

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.