HTTP库Axios推送损坏的更新,导致数千个网站瘫痪

Axios 是基于 Promise 的 HTTP 网络请求库,用于浏览器和 Node.js。Axios 体积非常小,提供了一个简单易用的库,具有易于扩展的接口。近日 Axios 发布的 1.1.0 版本更新在推送给用户后,由于包含损坏,导致数千个网站瘫痪。

根据用户提交的 issue,在 Axios v1.1.0 中,他们使用 axios.get 时出现了错误,会提示 TypeError: axios.get is not a function。这导致几乎所有请求都无法成功,因为如果按照预期的行为,axios.get 是一个有效的函数。这名用户还附上了重现问题的方法,使用 <script> 引入 axio v1.1.0,然后直接引用 axios.get() 就能复现错误:

1
<script src="https://unpkg.com/axios@1.1.0/dist/axios.min.js"></script><script>

注意:此问题没有在 v1.0.0 中复现。

从 issue 的评论可以看到,这些留言的开发者几乎全部由于此问题而导致生产环境直接崩溃。有开发者发现回滚到 1.0.0 即可解决此问题,但由于自己的 App 更新后需要审核,所以即便知道了解决方法也不能马上修复。也有开发者认为,受此问题影响的开发者在某种程度上 “不值得同情”,因为他们的生产应用在 CDN 上使用了最新(自动升级)的版本库,这是十分愚蠢的行为。开发团队在确认问题后,次日连续发布了两个补丁更新(v1.1.1 & v1.1.2)来修复错误,建议所有用户升级至最新版本。

相关链接:https://github.com/axios/axios/issues/5038