內容字號:默認大號超大號

段落設置:取消段首縮進段首縮進

字體設置:切換到微軟雅黑切換到宋體

業界
軟件
手機
數碼
電腦
學院
測評
圖賞
視頻
游戲
原創
直播
 AI
5G
蘋果
微軟
iPhone
Win10
精準搜索請嘗試:精確搜索

一個單行代碼 npm 包使得 JavaScript 生態系統陷入混亂

2020/4/29 8:42:13來源:開源中國作者:白開水不加糖責編:懶貓評論:

上周六,一個很小的 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”可以在一個模塊中進行管理,而不是讓成千上萬的開發人員在自己的項目中以不同的方式來處理它。

事實上,有關模塊化的討論已經存在了多年,因此在短期時間內可能也得不出什么結論。

相關文章

關鍵詞:npm

IT之家,軟媒旗下科技門戶網站 - 愛科技,愛這里。

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

軟媒公司版權所有    

哪个app有捕鸟达人 炒股自杀 云南十一选五直三开奖 四川金七乐手机版 安徽体彩11选五走势图 股票涨跌幅计算器 股票涨跌影响总资产 体彩快乐扑克3玩法 11选5电视图表 辽宁十一选五投注平台 幸运飞艇全国统一开奖结果