我正在客户端使用节点SDK和原始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
云功能?
我没有制作单个页面的应用程序,也没有使用任何视图框架。
答案 0 :(得分:8)
Firebase似乎尚未实现指向本地服务器的解决方案,因此我想到了一个小技巧。包括以下代码片段,用于初始化Firebase项目。希望对您有帮助!
if (process.env.NODE_ENV === 'development') {
firebase.functions()._url = function (name) {
return `${process.env.API_URL}/${name}`
}
}