只有几行代码的库,坑了数百万个项目!此次真是程序员的锅?

只有几行代码的库,坑了数百万 JS 项目程序员

上周末,一个 npm 小项目的更新给整个 npm 生态系统制造了一场混乱,影响到了数百万 JS 项目。npm

 

这个库就是 is-promise ,仅包含了几行代码,其功能是让开发者测试一个 JS 对象是不是 Promise,其它 JS 项目可经过一行代码调用使用该库。promise

尽管这个库没几行代码,但它倒是最流行的 npm 包之一,超过 340 万个项目使用。安全

is-promised 发布了一个更新,结果因为它不符合正确的 ES 模块标准,致使使用该库的其它项目在构建时出错。问题并无致使现有 JS 项目崩溃,而主要没法编译新版本。框架

许多知名的 JS 项目都受到影响,其中包括 Facebook 的 Create React App,Google 的 Angular.js 框架,Google 的 Firebasse-tools,亚马逊的 AWS Serverless CLI,Nuxt.js 等等。less

难道程序员连代码都不会写了吗?测试

npm 生态系统的依赖问题,早在 2016 年就引起过相似事件,有一个 NPM 库开发者撤回了他的代码(代码并很少,也就几行),致使诸多重量级应用(好比 React 和 Babel)都出问题了。对象

四年前,这个事情就引起激烈讨论。曾有人为此发出疑问:难道程序员连代码都不会写了吗?事件

举例来讲,有一个叫 isArray 的软件包,当时其一天的下载量有 88 万,2月份有 1800 万次下载量,它自己就只有一行代码。开发

NPM 生态系统中的许多开发者,看起来宁愿复用其余人写好的代码而不是本身写。这种作法存在严重的安全隐患,由于一个被普遍使用的软件包存在bug,你的代码也会受到影响,而你却没法本身去修正。