简体   繁体   中英

TypeError: firebase.messaging is not a function in node.js

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.

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

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM