Отправка уведомлений с помощью облачной функции Firebase - PullRequest
0 голосов
/ 01 декабря 2018

Чтобы использовать Firebase Cloud Messaging для последующей отправки уведомлений, я пытаюсь написать облачную функцию с именем sendNotification ;и я сталкиваюсь с проблемой в процессе.Если возможно, я хотел бы получить несколько советов о том, как решить эту проблему;или, может быть, просто попросите кого-нибудь указать на ошибку, которую я могу сделать.

Вот сообщение об ошибке, которое я получаю при выполнении команды:

firebase deploy

⚠  functions[sendNotification(us-central1)]: Deployment error.
Function load error: Code in file index.js can't be loaded.
Did you list all required modules in the package.json dependencies?
Detailed stack trace: Error: Cannot find module 'serviceAccountKey.json'
    at Function.Module._resolveFilename (module.js:476:15)
    ........

ItМожет быть полезно сказать, что файл serviceAccountKey.json находится в каталоге с именем node_modules , другими словами, отсутствует.Вот код в index.js:

const functions = require('firebase-functions');
const admin = require('firebase-admin');
var serviceAccount = require('serviceAccountKey.json');

admin.initializeApp({
    credential: admin.credential.cert(serviceAccount),
    databaseURL: 'https://myapp.firebaseio.com'
});

exports.sendNotification = functions.https.onRequest((req, res) => {
    let registrationToken = "abc123.........789xyz";
    var payload = {
        notification: {
          title: "NotifTit",
          body: "The good stuff."
        },
        token: registrationToken
    };

    admin.messaging().send(payload)
    .then((response) => {
        console.log("Successfully sent message: ", response);
    })
    .catch((error) => {
        console.log("Error sending message: ", error);
    })
});

Here is the contents of the package.json file:

{
  "name": "functions",
  "description": "Cloud Functions for Firebase",
  "scripts": {
    "serve": "firebase serve --only functions",
    "shell": "firebase functions:shell",
    "start": "npm run shell",
    "deploy": "firebase deploy --only functions",
    "logs": "firebase functions:log"
  },
  "dependencies": {
    "firebase-admin": "~6.0.0",
    "firebase-functions": "^2.1.0"
  },
  "private": true
}

1 Ответ

0 голосов
/ 01 декабря 2018

Вы не можете загружать файлы из папки node_modules, так как эта папка игнорируется при загрузке ваших функций.

Firebase dev Lauren Long с комментариями :

Но следует иметь в виду, что вся папка node_modules игнорируется при загрузке исходного кода, поэтому ваш package.json должен содержать все ваши зависимости и не может ссылаться ни на какие файлы внутри 'node_modules'.Другими словами, ваши функции все еще должны работать, если вы выполнили следующие команды внутри папки функций:

rm -rf node_modules 
npm install
...