EAS Build执行npm ci失败:package.json与package-lock.json不同步
EAS Build执行npm ci失败:package.json与package-lock.json不同步
我太懂这种明明本地操作都顺畅,一到EAS Build就卡壳的挫败感了!你已经试过删依赖、重生成lock文件、清EAS缓存这些常规操作,却还是卡在npm ci的同步错误上,大概率是本地npm版本和EAS Build环境的npm版本不匹配在搞鬼——不同版本的npm生成的package-lock.json格式、依赖解析逻辑会有差异,EAS那边用的npm版本读你本地生成的lock文件时,就会判定有依赖缺失。
下面给你一套针对性的解决步骤,亲测有效:
第一步:对齐本地与EAS的npm版本
- 先查本地npm版本:在终端运行
npm -v - 去你的EAS Build失败日志里找npm版本——一般在「Install dependencies」阶段最开头,会显示
npm version x.x.x - 如果两者版本不一致,要么用
nvm(Node版本管理器)把本地npm切换到和EAS一致的版本,要么在eas.json里指定EAS Build要用的npm版本:
打开eas.json,在对应构建配置的env里添加:{ "build": { "production": { "env": { "NPM_VERSION": "x.x.x" // 替换成你从日志里找到的EAS的npm版本 } } } }
第二步:严格重新生成并同步lock文件
确保用对齐后的npm版本,执行以下操作:
- 彻底清理本地残留:
# macOS/Linux rm -rf node_modules package-lock.json # Windows rmdir /s /q node_modules && del package-lock.json - 只生成lock文件(不安装依赖,更快更干净):
npm install --package-lock-only - 检查git状态,确保
package-lock.json有更新,然后提交:git add package-lock.json git commit -m "Sync package-lock.json with EAS npm version" git push
第三步:重新触发构建并清缓存
最后运行带清缓存的构建命令:
eas build -p android --clear-cache
额外排查点
如果还是不行,再检查这两个地方:
- 打开你的
.gitignore文件,确认没有把package-lock.json加进去,避免提交的不是最新的lock文件 - 去EAS Dashboard的构建记录里,手动删掉该项目的远程缓存(有时候
--clear-cache可能没清干净远程缓存)
按照这个流程走,基本能解决90%以上的npm ci同步问题,毕竟版本对齐是lock文件同步的核心前提。
内容来源于stack exchange
相关产品推荐
相关产品推荐

