gpt4 book ai didi

javascript - Firebase 函数无法在应用程序中使用 oncall 函数,返回内部错误

转载 作者:行者123 更新时间:2023-12-03 06:54:02 27 4
gpt4 key购买 nike

Firebase 函数 onCall 不起作用
我最近在关注 的 Firebase 教程系列。网络忍者 YouTube channel 。

The Net Ninja Firebase Function Playlist
Firebase Functions Tutorial #5 - Callable Functions

而且我卡在了firebase功能部分,首先我什至无法部署它们,因为我的帐户中启用了计费,然后我将package.json中的节点版本设置为'8',它没有要求计费当我部署功能时。

package.json


{
"name": "functions",
"description": "Cloud Functions for Firebase",
"scripts": {
"lint": "eslint .",
"serve": "firebase emulators:start --only functions",
"shell": "firebase functions:shell",
"start": "npm run shell",
"deploy": "firebase deploy --only functions",
"logs": "firebase functions:log"
},
"engines": {
"node": "8"
},
"main": "index.js",
"dependencies": {
"firebase-admin": "^8.10.0",
"firebase-functions": "^3.6.1"
},
"devDependencies": {
"eslint": "^5.12.0",
"eslint-plugin-promise": "^4.0.1",
"firebase-functions-test": "^0.2.0"
},
"private": true
}
早些时候是 "node": "10"在此之后,我可以部署这些功能,甚至可以运行 。请求 函数,但不是 待命 功能。
每当我尝试调用 待命 功能,我不知道会发生什么,也许我得到一个我不确定的错误。

index.js firebase function file


const functions = require('firebase-functions');

exports.randomNumber = functions.https.onRequest((request, response) => {
const number = Math.round(Math.random() * 100);
console.log(number);
response.send(number.toString());
});

exports.sayHello = functions.https.onCall((data, context) => {
console.log('its running');
return 'hello, ninjas';
});
randomNumber 完美运行,但 说你好从不运行或其他什么。
我调用 说你好来自前端的功能

app.js my web app's javascript file


//sayHello function call
const button = document.querySelector('.call');
button.addEventListener('click', () => {
//get firebase function reference
const sayHello = firebase.functions().httpsCallable('sayHello');
sayHello().then(result => {
console.log(result.data);
}).catch(error => {
console.log(error);
});
});
我还在 index.html 中正确初始化了 firebase
<!-- The core Firebase JS SDK is always required and must be listed first -->
<script src="/__/firebase/7.21.1/firebase-app.js"></script>
<!-- include only the Firebase features as you need -->
<script src="/__/firebase/7.21.1/firebase-auth.js"></script>
<script src="/__/firebase/7.21.1/firebase-firestore.js"></script>
<script src="/__/firebase/7.21.1/firebase-functions.js"></script>

<!-- Initialize Firebase -->
<script src="/__/firebase/init.js"></script>
在我的网络应用程序的控制台中,记录了一些内容
Error: internal
at new y (error.ts:66)
at w (error.ts:175)
at A.<anonymous> (service.ts:245)
at tslib.es6.js:100
at Object.next (tslib.es6.js:81)
at r (tslib.es6.js:71)
谁能至少告诉这个控制台日志是什么意思???

请帮助,无法完成教程系列,之后我将继续进行一些实际项目,现在已经被困了一个星期。
提前感谢,如果可以解决我的问题。

找到解决方案

只需将您在前端使用的 javascript sdk 版本降级到 7.21.0,就可以了。
正如@DougStevenson 在下方所述,Firebase 可调用函数目前(2020 年 10 月)不适用于 javascript sdk 7.21.1 和 7.22.0。
Cannot invoke HttpsCallable functions anymore after upgrading to firebase 7.22.0
<!-- The core Firebase JS SDK is always required and must be listed first -->
<script src="/__/firebase/7.21.0/firebase-app.js"></script>
<!-- include only the Firebase features as you need -->
<script src="/__/firebase/7.21.0/firebase-auth.js"></script>
<script src="/__/firebase/7.21.0/firebase-firestore.js"></script>
<script src="/__/firebase/7.21.0/firebase-functions.js"></script>

<!-- Initialize Firebase -->
<script src="/__/firebase/init.js"></script>

最佳答案

我发现来自 javascript Web 客户端的可调用函数在 SDK 版本 7.21.1 中被破坏。如果您降级到 7.21.0,它应该可以正常工作。最新的 7.22.0 似乎仍然损坏。
这是filed on GitHub如果你想跟踪它。
2020 年 10 月 5 日更新 :显然这已在 7.22.1 中修复。

关于javascript - Firebase 函数无法在应用程序中使用 oncall 函数,返回内部错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64183425/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com