这是我的 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);
});
结果是一个错误,描述如下:
此外,Firebase 控制台中没有任何日志。但是,如果我直接访问该链接,我会收到一条日志消息。这意味着两件事:
- 我的函数的 URL 是由我的网络客户端正确构建的。
- 鉴于直接访问它会在 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/