测试动态 / 行业资讯 / 一个单行代码 npm 包使得 JavaScript 生态系统陷入混乱
一个单行代码 npm 包使得 JavaScript 生态系统陷入混乱
2020-04-29 浏览次数:2270

上周六,一个很小的 JavaScript 库的更新使得大部分 JavaScript 生态系统陷入了混乱。据 ZDNet 指出,大约有数百万个项目在这一事件中受到了影响。 

而令人感到震惊地是,引起整个混乱的仅仅是一个“单行代码(one-liner) ” 的 JavaScript 库。这也是第二次发生由小型 JavaScript 项目引起广泛问题的情况。第一次是发生在 2016 年 3 月,当时 left-pad JavaScript 库的作者(一个总共只有 17 行代码的项目)突然决定取消发布该库,以类似的方式破坏了数千个项目。

而上周末导致一系列问题的这个软件包名为 is-promise,该库由两行原始源代码组成,开发人员可以通过单行调用在自己的项目中使用它。其目的是让开发人员测试 JavaScript 对象是否为“Promise”函数:用于生产环境中时,该函数返回 yes 或 no 的布尔值。

然而,尽管只是两行执行基本检查的代码,is-promise 库仍是当今最受欢迎的 JavaScript npm 软件包(库)之一。根据 GitHub 的说法,该库是超过 340 万个项目的一部分,并被 766 个其他 JavaScript 库用作依赖项。

上周末,is-promise 库进行了更新,以获取作为 ES 模块(JavaScript 语言使用的标准化模块系统)的支持。但是,is-promise v.2.2.0 版本却未遵循正确的 ES 模块标准。因此更新发布后,由于其不正确的 ES 模块支持 [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] ,在各自的构建链(build chain)中使用 is-promise 的众多项目纷纷开始出现问题。

该错误迅速地引发了一连串的影响,范围涵盖至封闭源 JavaScript 代码库和 JavaScript 生态系统中一些最大的项目。其中包括有:Facebook 的 Create React App(用于创建 React 应用程序的标准模板)、谷歌的 Angular.js 框架、谷歌的 Firebasse-tools、亚马逊的 AWS Serverless CLI、Nuxt.js 和 AVA 等。

So this just happened.
Is-Promise just made a little change and it broke multiple packages.

So far as I've read its broken Firebase-tools, angular cli, aws serveless cli, create react app, possibly more.https://t.co/3ZZofevWNR

— Preet™ (@TmPreet) April 25, 2020

该 bug 并没有导致现有项目崩溃,因此没有出现实际的停运故障,但其确实害得广大开发人员无法编译各自项目的新版本。 

之后,is-promise 团队发布了一个更新,但并未能解决该问题,最终还是在 v2.2.2 版本中撤回了支持 ES 模块的功能。

与 2016 年的情况一样,is-promise 事件引发了人们的疑问,大家开始讨论 JavaScript 生态系统中是不是真的需要单行代码库。就像 2016 年以及多年前其他编程语言的生态系统所提出的那样,同样的观点再次被提了出来。

有人认为,如果开发人员创建的库只有短短几行代码,对于最无关紧要的操作而言,模块化做得过头了,毫无必要。还有人认为,需要对这些项目进行模块化,因为以这种方式,“任务 A”可以在一个模块中进行管理,而不是让成千上万的开发人员在自己的项目中以不同的方式来处理它。

事实上,有关模块化的讨论已经存在了多年,因此在短期时间内可能也得不出什么结论。

文章转载自 OSCHINA 社区

热门标签 换一换
软件崩溃 稳定性测试 API测试 API安全测试 网站测试测评 敏感数据泄露测试 敏感数据泄露 敏感数据泄露测试防护 课题软件交付 科研经费申请 软件网站系统竞赛 竞赛CMA资质补办通道 中学生软件网站系统CMA资质 大学生软件网站系统CMA资质 科研软件课题cma检测报告 科研软件课题cma检测 国家级科研软件CMA检测 科研软件课题 国家级科研软件 web测评 网站测试 网站测评 第三方软件验收公司 第三方软件验收 软件测试选题 软件测试课题是什么 软件测试课题研究报告 软件科研项目测评报告 软件科研项目测评内容 软件科研项目测评 长沙第三方软件测评中心 长沙第三方软件测评公司 长沙第三方软件测评机构 软件科研结项强制清单 软件课题验收 软件申报课题 数据脱敏 数据脱敏传输规范 远程测试实操指南 远程测试 易用性专业测试 软件易用性 政府企业软件采购验收 OA系统CMA软件测评 ERP系统CMA软件测评 CMA检测报告的法律价值 代码原创性 软件著作登记 软件著作权登记 教育APP备案 教育APP 信息化软件项目测评 信息化软件项目 校园软件项目验收标准 智慧软件项目 智慧校园软件项目 CSRF漏洞自动化测试 漏洞自动化测试 CSRF漏洞 反序列化漏洞测试 反序列化漏洞原理 反序列化漏洞 命令执行 命令注入 漏洞检测 文件上传漏洞 身份验证 出具CMA测试报告 cma资质认证 软件验收流程 软件招标文件 软件开发招标 卓码软件测评 WEB安全测试 漏洞挖掘 身份验证漏洞 测评网站并发压力 测评门户网站 Web软件测评 XSS跨站脚本 XSS跨站 C/S软件测评 B/S软件测评 渗透测试 网站安全 网络安全 WEB安全 并发压力测试 常见系统验收单 CRM系统验收 ERP系统验收 OA系统验收 软件项目招投 软件项目 软件投标 软件招标 软件验收 App兼容性测试 CNAS软件检测 CNAS软件检测资质 软件检测 软件检测排名 软件检测机构排名 Web安全测试 Web安全 Web兼容性测试 兼容性测试 web测试 黑盒测试 白盒测试 负载测试 软件易用性测试 软件测试用例 软件性能测试 科技项目验收测试 首版次软件 软件鉴定测试 软件渗透测试 软件安全测试 第三方软件测试报告 软件第三方测试报告 第三方软件测评机构 湖南软件测评公司 软件测评中心 软件第三方测试机构 软件安全测试报告 第三方软件测试公司 第三方软件测试机构 CMA软件测试 CNAS软件测试 第三方软件测试 移动app测试 软件确认测试 软件测评 第三方软件测评 软件测试公司 软件测试报告 跨浏览器测试 软件更新 行业资讯 软件测评机构 大数据测试 测试环境 网站优化 功能测试 APP测试 软件兼容测试 安全测评 第三方测试 测试工具 软件测试 验收测试 系统测试 测试外包 压力测试 测试平台 bug管理 性能测试 测试报告 测试框架 CNAS认可 CMA认证 自动化测试
专业测试,找专业团队,请联系我们!
咨询软件测试 400-607-0568