请教个 npm 下载不下来 package,导致 integrity checksum failed 的问题

264 天前
 wtfedc

场景

项目没有包相关的变动,再跑流水线时候,执行npm ci报错:

npm ERR! code EINTEGRITY
npm ERR! Verification failed while extracting fsevents@1.2.4:
npm ERR! Verification failed while extracting fsevents@1.2.4:
npm ERR! sha1-9B3LGvJYKvNpLaNvxVy9jhBBxCY= integrity checksum failed when using sha1: wanted sha1-9B3LGvJYKvNpLaNvxVy9jhBBxCY= but got sha512-+ux3lx6peh0BpvY0JebGyZoiR4D+oYzdPZMKJwkZ+sFkNJzpL7tXc/wehS49gUAxg3tmMHPHZkA8JU2rhhgDHw== sha1-Z79X9HWPAu3oj7KhcS/vTRU1i+M=. (649719 bytes)
npm WARN tarball tarball data for fsevents@1.2.9 (sha1-P17WZYPM1vQAtaANtvfoYTY+OI8=) seems to be corrupted. Trying one more time.
npm WARN tarball tarball data for fsevents@1.2.9 (sha1-P17WZYPM1vQAtaANtvfoYTY+OI8=) seems to be corrupted. Trying one more time.

package-lock.json 片段:

"fsevents": {
      "version": "1.2.4",
      "resolved": "http://registry.npm.taobao.org/fsevents/download/fsevents-1.2.4.tgz",
      "integrity": "sha1-9B3LGvJYKvNpLaNvxVy9jhBBxCY=",
      "optional": true,
      "requires": {
        "nan": "^2.9.2",
        "node-pre-gyp": "^0.10.0"
      },
      "dependencies": {
        "abbrev": {
          "version": "1.1.1",
          "bundled": true,

从 resolved 地址下载下来,用 sha1+base64 计算后,和 integrity 是一致的。 看网上有人说网络问题也会导致 integrity 不一致,但是我手动下载包挺快的,难道我手动从 resolved 地址下载,和 npm 的下载机制不一样?

直接删掉 package-lock.json ,装新版本倒是可以,但是项目太老了,严重依赖这个版本 package-lock.json ,更新后会出现一堆别的问题。以前遇到过类似的情况,等个几天,传说中的网络情况好转后就正常了。关键不懂 npm 的机制,不太懂是哪到哪的网络不稳定。

898 次点击
所在节点    问与答
4 条回复
Corolin
264 天前
忘了 node 的版本对这个有没有影响了
wtfedc
264 天前
@Corolin node 也是老版本 10.22.1 ,一直没变过
Corolin
264 天前
@wtfedc emmm 拿新的 sha512 的值填到 integrity 后面去。。。
sputnick530L
255 天前
差不多上周 gitlab 的流水线也遇到这个问题,当时还以为是网络问题,今天才发现那之后所有都没跑通,然后本地 npm install 了一下,发现提示到这里看原因 https://github.com/advisories/GHSA-xv2f-5jw4-v95m , 说由于第三方回收了过期的云存储资源,fsevents v1.0.0 <= v1.2.10 下载的二进制可执行文件包含意外代码,建议升级到 1.2.x ,具体的我比较菜,也不太懂,希望有帮助^ ^

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/967721

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX