侧边栏壁纸
博主头像
M酷博主等级

一帆风顺 ⛵️⛵️⛵️

  • 累计撰写 45 篇文章
  • 累计创建 40 个标签
  • 累计收到 464 条评论

目 录CONTENT

文章目录

npm报错,构建失败,npm ERR! integrity checksum failed when using sha1: wanted xxxx but got yyyy

M酷
2021-03-12 / 6 评论 / 12 点赞 / 16,512 阅读 / 1,309 字 / 正在检测是否收录...
广告 广告

背景

最近在使用公司流水线部署前端项目的时候,一直都构建失败。最开始以为是 npm 源太慢的问题,试过 cnpm 依旧构建失败。
正郁闷着,然后试着点开了构建日志,发现了如下一行报错导致后面流程被中断。

npm ERR! integrity checksum failed when using sha1:: wanted xxxx but got yyyy

gjfail.png

过程

虽然发现问题所在,但是之前并没有遇到过这个问题,还不知道怎么搞定,然后就直接去百度了,发现了一些可能的解决办法。

  • 清理 npm 缓存
    npm cache clean –force
  • 验证缓存数据的有效性和完整性
    npm cache verify
  • 升级 npm 或 nodejs
    npm install -g npm

抱着很容易的心态挨个尝试了一番,问题依旧存在😢
怎么办?😠
反复搜索也基本都是复制粘贴😄

✅ 沉下心来仔细看了看日志,意思是说当前的 sha1值 和目标不一致,验证不通过导致的。抱着试一试的态度,我复制了前面的 sha1 那段到编辑器里全局搜索了一下,发现 package-lock.json 里面有相同的值,对应字段名 integrity

sha1err.png

卧槽,那是不是某些原因导致npm包的唯一识别码变动了,npm验证没通过然后报错的?顺着这个思路,我得到以下解决方法:

  • package-lock.json 删掉后重新 npm install
  • 替换 package-lock.json 中的 sha1值 为 npm 期望的 sha1值

重新安装其实还是有风险的,万一导致其他问题就不好了。
我试着把构建日志中 but got 后面的 sha1值 复制后替换本地 package-lock.json 中之前的值,提交代码 - 重新走流水线,亚麻黑,还真成了,还真是这个问题,太坑了😏。

结果

总结一下,npm 报这个错就是由于某些原因修改了npm包的唯一识别码,npm验证不通过,导致无法获取对应的包导致的。

⭕ 最保险的解决办法是替换对应的sha1值,然后再构建。
⭕ 最彻底的解决办法是删掉 package-lock.json 重新执行 npm install,然后再构建。

12
广告 广告

评论区