Вызов облачных функций Firebase не возвращает ошибок, но не выполняет функцию

# #javascript #firebase

Вопрос:

После очень долгого времени я почти заставил работать облачные функции Firebase. Я не получаю никаких ошибок, но не могу вызвать свою функцию. Вот что я сделал.

  1. Запустил «эмуляторы firebase:запуск» в моем каталоге firebase-функции.
  2. Запустил «развертывание firebase-только функции» в моем каталоге firebase-функции.
  3. Запустил сервер с посылкой, запустив «npm run dev» в каталоге моего проекта, по умолчанию используется порт 1234.

Я открыл Chrome на локальном хосте:1234.

Верхняя часть моего основного кода JavaScript выглядит так (я подвергал цензуре информацию об аутентификации):

 import firebase from "firebase/compat/app" import 'firebase/compat/functions' import 'firebase/compat/auth' import 'firebase/compat/analytics' import 'firebase/compat/database' import 'regenerator-runtime/runtime'  const firebaseConfig = {  apiKey: "XXXXX",  authDomain: "XXXXX-XXXXX.firebaseapp.com",  databaseURL: "https://XXXXX-XXXXX-default-rtdb.firebaseio.com",  projectId: "XXXXX-XXXXX",  storageBucket: "XXXXX-XXXXX.appspot.com",  messagingSenderId: "XXXXX",  appId: "1:XXXXX:web:XXXXX" }; firebase.initializeApp(firebaseConfig); firebase.functions().useEmulator("localhost", 5001); firebase.auth().setPersistence(firebase.auth.Auth.Persistence.LOCAL) firebase.analytics()  const app = firebase.initializeApp(firebaseConfig)  const conditionInfoEmail = firebase.functions(app).httpsCallable('conditionInfoEmail') conditionInfoEmail({ recipient: "someemailaddress@gmail.com", subject: "Test", body: "Some words" })  

Затем мой серверный код, мой index.js файл выглядит так:

 const functions = require("firebase-functions") var admin = require('firebase-admin')  const sgMail = require("@sendgrid/mail") const cors = require('cors') const API_KEY = functions.config().sendgrid.key const TEMPLATE_ID = functions.config().sendgrid.template sgMail.setApiKey(API_KEY)  exports.conditionInfoEmail = functions.https.onCall((data, context) =gt; {  cors(data, context, () =gt; {  const msg = {  to: data.recipient,  from: 'mailer@mydomain.com',  subject: data.subject,  text: data.body  }  console.log("cloud conditionInfoEmail complete")  return sgMail.send(msg)  }); });  

I’m not getting any errors, but when I open my app in Chrome and check the console, I don’t see the console.log statement, and no e-mail is sent.

I’m also unsure if I need to reference index.js in my HTML. I didn’t at first, and thought I didn’t need to because I don’t have any errors calling the function and I think the emulator deploys the functions without referencing it in the script, right?

But I tried adding this line to reference index.js:

 lt;script src="firebase-functions/functions/index.js"gt;lt;/scriptgt;"  

And that causes the error, «Failed to install (@)babel/core» I had to put the @ in parenthesis or it tries to reference a user on Reddit.

Мне кто-то сказал, что на самом деле мне не нужно устанавливать babel, хотя он должен быть установлен во время выполнения. И я не уверен, нужно ли мне вообще ссылаться на этот файл, или я иду по неправильному пути, пытаясь устранить это.

Может ли кто-нибудь дать мне представление о том, что я могу делать неправильно?

Я также получал эту ошибку/предупреждение в моем интерфейсе командной строки эмулятора Firebase при попытке запустить код.

 i functions: Beginning execution of "us-central1-conditionInfoEmail" gt; {"verifications":{"app":"MISSING","auth":"MISSING"},"logging.googleapis.com/labels":{"firebase-log-type":"callable-request-verification"},"severity":"INFO","message":"Callable request verification passed"}