无法从前端调用Firebase云功能

时间:2020-10-21 09:12:40

标签: typescript firebase google-cloud-functions frontend

我已经尝试了至少一个小时。函数makeUserAdmin已部署到Firebase。我还有其他可运行的云功能(由auth.user().onCreate()auth.user().onDelete()触发。
看一下带有中文注释的行,这不是我应该如何从前端引用云函数吗?显然,我不知道该如何导入该功能,因为打字稿无法给我任何帮助/自动完成功能。
我是否必须通过CDN在index.html中导入与firebase-functions相关的内容? (顺便说一句,我还有其他通过CDN导入的其他服务。

// @ts-ignore
import * as firebase from 'firebase';

// @ts-ignore
// import * as functions from 'firebase-functions';

// const firebase = require("firebase");
// // Required for side-effects
// require("firebase/functions");

// @ts-ignore
const makeAdminForm: HTMLFormElement = document.querySelector('#makeAdmin')!;

makeAdminForm.addEventListener('submit', (e: Event) => {
    e.preventDefault();
    makeAdminForm.reset();                                                     //this code executes

    const email: string = makeAdminForm.makeAdminEmail.value;
    //TODO check if acc with that email address exists

    var languagesString: string = makeAdminForm.makeAdminLanguages.value;
    languagesString = languagesString.replace(/\s+/g, ' '); //replace multiple consecutive spaces by one space
    //TODO check with regex, only lowercase letters and spaces
    const languagesList: string[] = languagesString.trim().split(" ");

    const makeUserAdmin = firebase().functions.httpsCallable('makeUserAdmin'); //你看这里
    makeUserAdmin({ //context must not be passed manually
        emailToMakeAdmin: email
    }).then((result: object) => {
        console.log(result);
    });
});

我知道函数makeUserAdmin不会被调用,因为在firebase控制台中没有创建任何新日志(但是,使用其他函数创建了新日志)

1 个答案:

答案 0 :(得分:1)

您需要添加要使用的Firebase产品(即您的案例中的Firebase Client SDK的Cloud Functions),

// Firebase App (the core Firebase SDK) is always required and must be listed first
import * as firebase from "firebase/app";

// Add the Firebase products that you want to use
import "firebase/functions";

请参阅文档here(“使用模块捆绑程序”标签)和here