GitHub Action执行npm ci遇EINTEGRITY校验失败问题求助
解决GitHub Action中npm ci的EINTEGRITY及tarball损坏问题
可行解决方案
- 禁用npm缓存执行ci:在GitHub Action的npm ci命令中添加
--no-cache参数,跳过缓存直接下载完整包,避免读取损坏的缓存文件:npm ci --no-cache - 替换gitpkg依赖方式:
- 优先使用npm官方发布的正式包,替换gitpkg链接:
"@next-auth/adapter-test": "^4.24.7", "@next-auth/tsconfig": "^0.1.0" - 若需使用仓库子目录代码,改用Git子模块替代gitpkg:
- 本地添加子模块:
git submodule add https://github.com/nextauthjs/next-auth.git ./submodules/next-auth - 在package.json中引用本地子目录:
"@next-auth/adapter-test": "file:./submodules/next-auth/packages/adapter-test", "@next-auth/tsconfig": "file:./submodules/next-auth/packages/tsconfig"
- 本地添加子模块:
- 优先使用npm官方发布的正式包,替换gitpkg链接:
- 更新package-lock.json:本地执行
npm install重新生成lock文件,确保文件内的校验和与当前包的实际值一致,提交更新后的package-lock.json到仓库后再触发Action。
问题根源
- gitpkg动态生成tarball的不稳定性:gitpkg会实时从Git仓库子目录生成tarball提供下载,GitHub Action环境的网络波动或gitpkg服务临时异常,可能导致下载的tarball数据不完整,进而触发EINTEGRITY校验失败和损坏警告。
- GitHub Action的npm缓存残留:默认启用的npm缓存可能保留了之前下载失败的损坏tarball,后续执行ci时直接读取缓存,导致错误重复出现。
内容的提问来源于stack exchange,提问作者Roeland
相关产品推荐
相关产品推荐

