ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

Firebase 本地模拟器:我的宿敌

2022-09-04 11:31:36  阅读:224  来源: 互联网

标签:宿敌 Google 示例 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

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有