You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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版本

  1. 先查本地npm版本:在终端运行
    npm -v
    
  2. 去你的EAS Build失败日志里找npm版本——一般在「Install dependencies」阶段最开头,会显示npm version x.x.x
  3. 如果两者版本不一致,要么用nvm(Node版本管理器)把本地npm切换到和EAS一致的版本,要么在eas.json里指定EAS Build要用的npm版本:
    打开eas.json,在对应构建配置的env里添加:
    {
      "build": {
        "production": {
          "env": {
            "NPM_VERSION": "x.x.x" // 替换成你从日志里找到的EAS的npm版本
          }
        }
      }
    }
    

第二步:严格重新生成并同步lock文件

确保用对齐后的npm版本,执行以下操作:

  1. 彻底清理本地残留:
    # macOS/Linux
    rm -rf node_modules package-lock.json
    # Windows
    rmdir /s /q node_modules && del package-lock.json
    
  2. 只生成lock文件(不安装依赖,更快更干净):
    npm install --package-lock-only
    
  3. 检查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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.07 10:59:34