28.04.2020 | Обновление для JavaScript-библиотеки «сломало» часть JavaScript-экосистемы |
Обновление для библиотеки JavaScript на прошлых выходных повергло в хаос большую часть JavaScript-экосистемы, причинив головную боль разработчикам миллионов проектов. Абсурдность ситуации заключается в том, что весь сыр-бор разгорелся из-за крошечной JavaScript-библиотеки, состоящей всего из двух строк (так называемый one-liner). Речь идет о пакете is-promise, позволяющем разработчикам проверять, являются ли JavaScript-объекты объектами Promise. Хотя библиотека состоит всего из двух строк кода для базовой проверки, она является одним из самых популярных в настоящее время npm-пакетов. Согласно данным GitHub, is-promise входит в 3,4 млн проектов и используется в качестве зависимости еще в 766 JavaScript-библиотеках. На прошлых выходных is-promise была обновлена, чтобы исполнять роль ES-модуля – стандартизированной модульной системы в языке JavaScript. Тем не менее, версия is-promise 2.2.0 не соответствовала надлежащим стандартам ES-модуля. Из-за неправильной реализации поддержки ES-модуля сразу после выхода обновления проекты, использовавшие is-promise в своей цепочке сборки, начали давать сбои. Эффект от ошибки сказался незамедлительно. Проблема затронула как кодовые базы JavaScript с закрытым исходным кодом, так и некоторые из крупнейших проектов экосистемы JavaScript. Сюда входят: Create React App (стандартный шаблон для создания приложений React) от Facebook, фреймворк Angular.js от Google, Google Firebasse-tools, Amazon AWS Serverless CLI, Nuxt.js, AVAи пр. Ошибка не привела к сбою существующих проектов, поэтому простоев не было, но разработчики не смогли скомпилировать новые версии своих проектов. Команда is-promise выпустила обновление, однако оно не смогло устранить проблему, и в конечном итоге от поддержки ES-модуля в версии 2.2.2 пришлось отказаться. |
Проверить безопасность сайта