Erick Wendel (Web GDE) 如何在开源社区的支持下永远地改变了 Node.js

五月 23, 2023
Kevin Hernandez Developer Relations Community Manager

您是否曾遇到过全球已知技术存在错误的情况?您会怎么办? 

如果您是 Erick Wendel (Web GDE),您会像他一样为困扰大型科技公司的错误寻找解决方案吗? 

Erick 是一名社区型开发者,之所以涉足该领域,是因为他接触了曾在他的祖国巴西提供免费课程的一个软件社区。这次经历激发了他对开源项目和通力协作的热情,并帮助他解决了 Node.js 中影响子流程在运行时中的工作方式的问题。Erick 一直发扬分享知识的精神,并在 YouTube 视频(葡萄牙语)中详尽、确切地概述了他是如何解决错误的。



erickWendelNodeJS
Erick Wendel (Web GDE) 在 FrontInSampa 会议上发表演讲

错误

在 Node.js 中,有一个名为子流程的模块,允许您在其他函数中创建任务,以便在后台处理数据。此流程利用计算机和网页中的更多功能来加快页面加载速度。尝试在 JavaScript 中导入模块时,有以下两种主要方法可以加载这些模块:

  1. CommonJS:需要按特定序列加载脚本。如果未按该序列加载模块,此方法会拦截程序。
  2. ECMAScript 模块:允许 JavaScript 异步加载模块,从而防止程序在加载文件时被拦截。

在为学生制作教学课程时,Erick 使用的是 Node.js 的子流程模块,并尝试安排一个将在后台执行的函数。如果运行正常,父流程应该在调用函数后立即向在后台运行的程序发送消息。在此过程中,他注意到他收到了错误消息,该错误甚至导致他的代码多次被重新编写。Erick 百分之百确信他的代码应该有效,尽管他很有信心,但他还是收到了错误消息。他心想:“如果我只是在这里放一个 setTimeout 函数,稍等片刻,然后再要求执行事件,是否管用呢?然后它的确奏效了!”Erick 意识到这实际上是真实存在的错误,于是直接进入 Node.js 的 GitHub 代码库提出了问题,并与其他贡献者合作寻找最佳解决方案。

寻找解决方案

在灵光一现之后,Erick 想确定这个问题不是只影响他一个人。他发现:“当我在 Google 上搜索这个问题时,我在任何运行 JavaScript 的人都可能使用的 Facebook JestYarn 和其他大型库中都发现了这些问题。”作为开源项目和通力协作的倡导者,Erick 在 Node.js 的 GitHub 上提出了问题,并在有其他贡献者参与的情况下讨论了这个问题。

当被问及修复此错误用到的资源时,Erick 立即提到了开源社区。他与自己认为的最重要的 Node.js 贡献者之一 Anna Henningsen 进行了交谈。他提出的想法是在子流程模块中引入一个新事件,在事件“准备就绪”时提醒用户。但是,正如 Anna 指出的那样,这会导致一些变化,要求社区成员学习如何使用这个新流程。相反,她提出:“如果您只是将所有消息放入队列中,然后在子流程准备就绪时再全部发送呢?”这是他努力达成的协作,并且 Anna 提出的这个解决方案可以在不破坏所有使用 Node.js 的应用的情况下修复这个错误。

Anna 提供了巨大的支持,在 GitHub 上开始讨论后,社区成员立即对该项目发表了评论并提供了意见。他回忆说:“在我提交第一个版本的解决方案后,许多贡献者在查看我的代码后说,‘不,不,这不是正确的方式,您应该解决这个问题,这属于性能问题,等等。’所以我得到了很多反馈,学到了很多东西,解决方案也在最终获得了批准!”如果没有开源社区的帮助,他研究出的解决方案可能会产生更多问题。相反,社区指出了他的盲点,这种协作提供了无缝的解决方案。

借助 Erick 的解决方案,Node.js 可以使用 ECMAScript 模块有效地运行后台任务,大公司也非常感谢 Erick 和开源社区解决了自 Node.js 出现以来一直存在的问题。

影响

自解决此问题以来,Erick 已经成为 Node.js 的核心成员,负责审查拉取请求、参加讨论,并被视为该领域有影响力的开发者。Erick 还被邀请到世界各地参加会议,谈论开源开发和自身的经验。

Erick 希望让更多人了解开源项目的作用,并恳求每个人(无论是学生还是专业人士)为开源项目提供帮助。这些项目帮助他实现了在世界上留下深刻印象的目标,他说:“我想在人们将永远铭记的事物上留下自己的名字。我想说的是,这就是开源的作用。您可以提供想法或尝试修复一些东西,这可以让您成为更好的开发者和更好的人。”

Erick 在不断地解决问题(在他最新的解决方案中,只需编写一行代码就可以修复 Node.js 中的一个错误)、学习、通过他的 YouTube 频道进行教学,并期待迎接下一个巨大的挑战。

Erick 致谢

Erick 要感谢开源社区,特别是 Anna Henningsen 和 Rich Trott 对此解决方案的支持和贡献。用他的话说,“我知道,对于那些经验丰富的 Node.js 协作者来说,修复这个错误只需几分钟时间,但他们还是让我提供帮助并尽力而为。这是我永远不会忘记的一课。”

You can find Erick on Twitter, GitHub and YouTube where he published a step-by-step tutorial (in Brazilian Portuguese) on how he fixed this bug and also gave a summarized tech talk sharing his journey.

Google 开发者专家 (GDE) 计划是一个由资深技术专家、影响者和思想领袖组成的全球网络,他们通过在活动中发表演讲,发布内容,积极支持开发者、公司和技术社区的发展。