整一个大无语,记录几个月前的一次查错

384 阅读2分钟

本文已参加【新人创作礼】活动,一起开启掘金创作之路。

前言

在某一天的工作中,我像往常一样接上了一杯82年的热水泡上了枸杞菊花茶然后准备开始今天的工作(摸鱼🐙),执行完yarn build以后,奇了怪了,报错了.......

错误

具体错误为执行start /B node compile.js & node compile.js报错,报错原因百度了一下,原因就是npm上有个包叫"coa"的被劫持了并且注入了恶意代码,此包最后一个正常版本为“2.0.2”,高于这个版本的都是恶意包。

解决步骤

  • 先骂骂咧咧的和同事吐槽,这什么他喵的一帮人吃饱了没事做,搞这些💀💀
  • 既然定位到了问题并且知道这个“coa”有个正常版本是“2.0.2”,那就锁下版本呗,于是自信的执行了yarn add coa@2.0.2,结果依旧没用⚡,想了想coa并不是我自己安装的,应该是我的node_modules里面有某个包用到了有恶意代码的coa,所以这样操作无用
  • 思路清晰了,心中已经有想法了,看到我的水喝完了,再去接上一杯热水,看看今天的大盘走势放松一下🍮🍮

真正的解决方法(根据你安装依赖的方式选择)

  • yarn在package.json中添加
"resolutions": {
    "coa": "2.0.2"
}

  • pnpm在package.json中添加
"pnpm": {
    "overrides": {
      "coa": "2.0.2"
    }
}
  • npm(靴微有一点点麻烦,我自己总结的,有更好的方法评论区告诉我❤️❤️) 1.删除本地node_modules,package-lock.json

2.先执行npm install coa@2.0.2 --save 安装并生成lock文件锁定coa的版本

3.再执行npm install安装package.json中其他包

这样即使是将node_modules再次删除只要直接执行npm install也会按照锁定的coa版本进行下载安装

结尾

一天的工作(划水)又结束了,最后还是要吐槽一句,这些人一天到晚的劫持npm包,真的是有个大病🙏🙏