gpt4 book ai didi

firebase - 在本地托管的 Firebase 应用程序中使用本地模拟的 https.onCall Firebase 函数

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

我正在客户端使用 Node SDK 和 vanilla JavaScript 编写 Firebase 应用程序。我正在使用 Firebase Cloud Functions 来实现一个服务器,该服务器接收页面路由的请求并使用 https.onRequest 返回渲染的 HTML方法。我还使用 Cloud Functions 处理与 https.onCall 的客户端-服务器交互方法。

我使用firebase serve进行本地开发命令。在本地开发时,我的客户似乎忽略了我本地的 onCall函数,而不是调用部署的 onCall 的路由功能。我被迫部署我的 onCall函数以便在本地查看更改。如果我不部署每个更改,我的本地应用程序将不会显示对 onCall 的任何更改功能。无论我运行firebase serve,都会发生这种情况或firebase serve --only=hosting,functions .

当我使用 firebase serve 在本地运行我的应用程序时,页面通常托管在 localhost:5000 。这些功能托管在 localhost:5001 。如果我在这些本地托管页面之一上调用云函数,例如 firebase.functions().httpsCallable('functionName')并检查我的开发人员工具中的网络面板,我可以看到请求 URL 是 https://us-central1-<app-name>.cloudfunctions.net/<functionName> ,而不是 localhost:5001/<app-name>/us-central1/<functionName> .

这让我很沮丧,因为这意味着我必须部署函数来测试每个更改,而不是通过本地托管的 Web 应用程序测试本地函数。

我是否配置错误?如何让我的本地托管应用程序使用我的本地模拟 onCall云功能?

我没有制作单页应用程序或使用任何 View 框架。

最佳答案

Firebase 似乎尚未实现指向本地服务器的解决方案,因此我想出了一些技巧。在初始化 Firebase 项目时包含以下代码片段。希望对您有帮助!

if (process.env.NODE_ENV === 'development') {
firebase.functions()._url = function (name) {
return `${process.env.API_URL}/${name}`
}
}

编辑:就像下面评论的 goker.cebeci 一样,连接到本地模拟器的正确方法是使用 functions.useFunctionsEmulator('http://localhost:5001') (将 http://localhost:5001 更改为本地模拟器运行的任何地址)

更新后的代码如下所示:

if (process.env.NODE_ENV === 'development') {
const functions = firebase.functions()
functions.useFunctionsEmulator('http://localhost:5001')
}

关于firebase - 在本地托管的 Firebase 应用程序中使用本地模拟的 https.onCall Firebase 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50975232/

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