# #javascript #firebase
Вопрос:
После очень долгого времени я почти заставил работать облачные функции Firebase. Я не получаю никаких ошибок, но не могу вызвать свою функцию. Вот что я сделал.
- Запустил «эмуляторы firebase:запуск» в моем каталоге firebase-функции.
- Запустил «развертывание firebase-только функции» в моем каталоге firebase-функции.
- Запустил сервер с посылкой, запустив «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"}