我正在从Web应用程序调用一个简单的Firebase函数,但出现内部错误。有人可以建议我哪里可能出问题了。
我看到过类似的问题,但是他们没有回答我面临的问题。
我可以确认该功能已部署到Firebase。
通过将以下链接粘贴到浏览器中,我得到了响应。 https://us-central1-cureme-dac13.cloudfunctions.net/helloWorld
index.js 文件具有代码(Firebase云功能在index.js中定义)
const functions = require('firebase-functions');
exports.helloWorld = functions.https.onRequest((request, response) => {
response.send("Hello from Firebase!");
});
webApp.js 具有以下代码(客户端/网站)
var messageA = firebase.functions().httpsCallable('helloWorld');
messageA().then(function(result) {
console.log("resultFromFirebaseFunctionCall: "+result)
}).catch(function(error) {
// Getting the Error details.
var code = error.code;
var message = error.message;
var details = error.details;
// ...
console.log("error.message: "+error.message+" error.code: "+error.code+" error.details: "+error.details)
// Prints: error.message: INTERNAL error.code: internal error.details: undefined
});
答案 0 :(得分:2)
您正在混淆Callable Cloud Functions和HTTPS Cloud Functions。
这样做
exports.helloWorld = functions.https.onRequest(...)
您定义HTTPS云功能,
但是这样做
var messageA = firebase.functions().httpsCallable('helloWorld');
messageA().then(function(result) {...});
在您的客户端/前端中,您实际上调用了可调用云功能。
您应该将Cloud Function更改为Callable,或者通过向Cloud Function URL发送HTTP GET请求来调用/调用helloWorld
HTTPS Cloud Function(类似于您在浏览器中所做的操作“在浏览器中粘贴https://us-central1-cureme-dac13.cloudfunctions.net/helloWorld
链接”)。
例如,通过使用Axios库,您可以这样做:
axios.get('https://us-central1-cureme-dac13.cloudfunctions.net/helloWorld')
.then(function (response) {
console.log(response);
})
.catch(function (error) {
console.log(error);
})