Admin.messaging() не является функцией в "firebase-admin": "^11.3.0",

Я пытался отправить уведомление в тему «Все», и в журнале консоли отображается ошибка:

Уведомление отправлено не удалось: TypeError: admin.messaging не является функцией

Код:

// The Cloud Functions for Firebase SDK to create Cloud Functions and set up triggers.
const functions = require('firebase-functions');

// The Firebase Admin SDK to access Firestore.
var admin = require("firebase-admin/app");
const { applicationDefault } = require('firebase-admin/app');

admin.initializeApp({
  credential: applicationDefault(),
  databaseURL: "my-firebase-url"
});

exports.notificationsOnCreate = functions.database.ref("/{type}/{id}/").onCreate(async (snapshot, context) => {
  const payload = {
    notification: {
      title: 'cloud function demo',
      body: 'this is a test notification'
    }
  };
  
  try{
    return await admin.messaging().sendToTopic("All", payload)
    .then(function(response){
    console.info('Notification sent successfully: ', response);
    });
  } catch(err) {
    console.info('Notification sent failed: ', (err));
  }
})

В других темах о переполнении стека рекомендуется обновить firebase-admin до версии > 5.1, но, похоже, это не проблема.

Файл package.json:

{
  "name": "functions",
  "description": "Cloud Functions for Firebase",
  "scripts": {
    "serve": "firebase emulators:start --only functions",
    "shell": "firebase functions:shell",
    "start": "npm run shell",
    "deploy": "firebase deploy --only functions",
    "logs": "firebase functions:log"
  },
  "engines": {
    "node": "16"
  },
  "main": "index.js",
  "dependencies": {
    "firebase-admin": "^11.3.0",
    "firebase-functions": "^4.1.0"
  },
  "devDependencies": {
    "firebase-functions-test": "^0.2.0"
  },
  "private": true
}
[JS за 1 час] - 9. Асинхронный
[JS за 1 час] - 9. Асинхронный
JavaScript является однопоточным, то есть он может обрабатывать только одну задачу за раз. Для обработки длительных задач, таких как сетевые запросы,...
Подъем в javascript
Подъем в javascript
Hoisting - это поведение в JavaScript, при котором переменные и объявления функций автоматически "перемещаются" в верхнюю часть соответствующих...
Как использовать API парсинга квитанций с помощью JavaScript за 5 минут?
Как использовать API парсинга квитанций с помощью JavaScript за 5 минут?
В этом руководстве вы узнаете, как использовать API парсинга квитанций за 5 минут с помощью JavaScript. Eden AI предоставляет простой и удобный для...
Хук useOnClickOutside в ReactJS
Хук useOnClickOutside в ReactJS
Как разработчик ReactJS, вы, возможно, сталкивались с ситуацией, когда вам нужно закрыть модальное или выпадающее меню, когда кто-то щелкает за его...
Хуки (часть-2) - useEffect
Хуки (часть-2) - useEffect
Хук useEffect - один из самых мощных и универсальных инструментов в арсенале разработчика React. Он позволяет вам управлять побочными эффектами в...
Простое руководство по тестированию взаимодействия с пользователем с помощью библиотеки тестирования React
Простое руководство по тестированию взаимодействия с пользователем с помощью библиотеки тестирования React
В предыдущем посте я показал вам на примерах, как писать базовые тесты в React. Важнейшей частью пользовательского интерфейса приложений является...
0
0
81
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Импортировать из firebase-admin вместо firebase-admin/app

// The Firebase Admin SDK to access Firestore.
var admin = require("firebase-admin");

Другие вопросы по теме