今天同事在升级view-design的时候,drone流程报错了。错误信息如下:
npm ERR! code EINTEGRITY
npm ERR! Verification failed while extracting view-design@4.4.0:
npm ERR! Verification failed while extracting view-design@4.4.0:
npm ERR! sha1-bwgcZzt3QgObs4o6UZOO+rtg0KI= integrity checksum failed when using sha1: wanted sha1-bwgcZzt3QgObs4o6UZOO+rtg0KI= but got sha512-2+xbda6/USUm9Pn+D25NPsIBg7XVhkFC90Ycs0GcFQ4AHZ1QRwDGOj0PGA3eeL4yuVpigdDfmwmNJAoczYXlPA== sha1-w+71q9rNcGAe1e/JAosAZlfmao0=. (2754160 bytes)
起初还以为是npm仓库里版本不存在呢,后来一想不对呀,npm仓库的版本号应该和官网发布的版本号一致才对,官网既然有,说明npm里也有呀,去到npmjs仓库还真找到了,说明不是这个问题。
经过沟通,发现同事直接修改了package-lock.json里的版本号,版本号和校验码不匹配。正确的操作方式应该是修改package.json里的版本号,再npm install 重新生成package-lock.json文件。
如果项目是生产环境,建议大家锁定部分核心组件的版本号,很多时候本地可以,但是发布到线上就报错,原因都是因为版本没锁定,本地的node_modules里的版本号和生产环境cicd时部署的版本不一致。这个问题出现过很多次,切记切记。锁定版本就是把package.json里模块版本号前面的^,删除。例如 ^4.3.2 => 4.3.2