Firebase 本地模拟器:我的宿敌
作者:互联网
Firebase 本地模拟器:我的宿敌
两全其美。
公平警告:这是一个咆哮,不太可能对我的任何普通读者有任何好处,但我需要把它说出来,因为我已经浪费了 2.5 天的时间来反对这个,我必须发出尖酸刻薄某处。
我很难找到词语来形容使用 Google Firebase 本地模拟器是多么令人沮丧。我正在尝试做可以说是使用该软件可以做的最简单的事情:我有一个 React Web 应用程序,并想从中调用一两个 Firebase Cloud Functions。
在你问之前,是的,我一直回到从文档中复制/粘贴示例,我的经验是 没有什么 工作可靠。示例代码永远不会开箱即用。除了开箱即用的示例代码之外,每个调试周期都如下所示:
- 退出 Chrome。
- 杀死任何正在运行的模拟器。
- 前往
功能
目录并手动执行tsc
将 TypeScript 转换为 JavaScript 的调用。 - 重新启动模拟器(使用从我们的产品实例导出的导入数据。)
- 转到模拟器控制台网站并手动重置我帐户上的密码(是的,每次!我明白为什么他们不带上密码 - 安全性和所有 - 但这是我可以说是最无聊的步骤.)。
- 将 WebStorm 调试器附加到正在运行的函数模拟器。
- 使用我的电子邮件和密码登录 React 网站(是的,每次!)。
- 导航到理想情况下会触发云功能的页面。
- 单击按钮并尝试触发该功能。
- 倒在地板上,痛苦地哭泣着,因为它仍然无法正常工作。
我知道分布式系统比独立的桌面/移动应用程序有更多的移动部分,所以总会有一些开销。这仍然不是开发人员体验的借口 这不好 .使用本地开发环境的全部原因是,您不必处理所有云配置和部署以取得增量进展,而在这里,谷歌似乎已经将所有的痛苦都内包了,甚至添加了更多在上面。
其他废话:
- 标准
.env.development.local
文件似乎不适用于模拟器,因此您必须对所有秘密进行硬编码。凉爽的。希望我在提交 Git 之前不要忘记删除它们! - 忘记上述任何一个步骤,您会收到一些难以理解的错误消息,这些错误消息对指出实际的潜在问题没有任何作用。我最喜欢的是与 CORS 相关的废话。我再也回不来这六个小时的生命了。
以下是 Google 的一些热门提示:
- 制作功能示例代码。 (我从他们的网站上复制/粘贴的任何一个片段都不需要大量编辑就可以了 任何事物。 )
- 保持最新。 (他们仍在使用
要求
……现在是 2022 年。WTF?) - 确保它在人们用来编写 Firebase 应用程序的前五个 IDE 中开箱即用(VSCode 和 WebStorm 似乎是一个好的开始)。
- 使用最佳实践。
.env
例如文件。 - 为这些示例提供详尽的防弹文档,逐个解释如何更改示例代码以用于您的 Firebase 项目(即 API 密钥等)。
根据我使用 Firebase 功能的经验,在生产环境中进行测试实际上比使用本地模拟器要容易 100 倍。本地工作应该是 更轻松 , 不是 更难 .我重视使用调试器和脱机工作的能力,这就是为什么我一开始就一直在处理这种瘴气,但经过几天的努力,我快要完成了。
我鄙视像 Ruby on Rails 这样的软件,它重视魔法而不是可理解性。这是一个不同的野兽,但它是相似的;他们试图提供帮助,但它不起作用。
我开始走这条路是因为 Google 的文档说从浏览器中进行批量 Firestore 写入和删除不是“最佳实践”,并建议将这些操作捆绑到云功能中。在尝试听从他们的建议 2.5 天后,我再也不想编写、测试、部署或调试另一个 Firebase Cloud Function。
Larry Wall(Perl 的创造者)曾经说过:
容易的事情应该是容易的,困难的事情应该是可能的。
我使用 Firebase Local Emulators 的经验是,事情很简单 几乎 不可能的,困难的事情是 实际上 不可能的。我放弃。
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明
本文链接:https://www.qanswer.top/12130/22490411
标签:宿敌,Google,示例,Firebase,本地,使用,模拟器 来源: https://www.cnblogs.com/amboke/p/16654700.html