javascript - Firebase 可调用函数不起作用

标签 javascript node.js firebase google-cloud-functions

这是我的 index.js 文件的一部分:

const firebase = require("firebase");
const functions = require('firebase-functions');
// Firebase Setup
const admin = require('firebase-admin');
const serviceAccount = require('./service-account.json');
const cors = require('cors')({ origin: true });
admin.initializeApp({
  credential: admin.credential.cert(serviceAccount)
});

exports.addMessage = functions.https.onCall((data, context) => {
    const sanitizedMessage = sanitizer.sanitizeText("test");
    return admin.database().ref('/messages').push({
        text: sanitizedMessage
    }).then(() => {
        console.log('New Message written');
        return { text: sanitizedMessage };
    })
});

此函数已成功上传到 Firebase。我尝试使用以下代码从我的网络客户端调用它:

var addMessage = firebase.functions().httpsCallable('addMessage');
addMessage({text: "test"}).then(function(result) {
    var sanitizedMessage = result.data.text;
    console.log(sanitizedMessage);
});

结果是一个错误,描述如下:

enter image description here

此外,Firebase 控制台中没有任何日志。但是,如果我直接访问该链接,我会收到一条日志消息。这意味着两件事:

  1. 我的函数的 URL 是由我的网络客户端正确构建的。
  2. 鉴于直接访问它会在 Firebase 控制台中生成日志,这意味着我的 Web 客户端甚至不会进行此调用。

我完全陷入困境,因为我遵循了 official guide .

非常感谢任何调试方面的帮助。

最佳答案

const functions = require('firebase-functions');
const admin = require('firebase-admin');
const cors = require('cors')({ origin: true });
admin.initializeApp();

exports.addMessage = functions.https.onCall((data, context) => {
    const sanitizedMessage = sanitizer.sanitizeText("test");
    return admin.database().ref('/messages').push({
        text: sanitizedMessage
    }).then(() => {
        console.log('New Message written');
        return { text: sanitizedMessage };
    })
});

关于javascript - Firebase 可调用函数不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50359747/

相关文章:

swift - 在 Firebase 中更改应用程序 'sent from' 电子邮件地址

javascript - tofixed() + 2 表现得像 tofixed + "2"

javascript - 如何禁用浏览器功能

node.js - 下划线中的 where() 未按预期工作

javascript - Node Js Express 路由器不工作

firebase - 只有 Android 应用程序模块可以连接到 Firebase 在线项目

javascript - 使用通过 EditText 获取的变量将 javascript 命令发送到 Webview

javascript - 在满足条件时为文本着色

node.js - 如何在nodejs中将多个转换流合并为一个

node.js - 使用 Firebase 获取 downloadURL 不断抛出错误 'XMLHttpRequest is not defined'