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

Expo SDK37升级至45报错npm exited with non-zero code:190如何解决

问题根因

npm exited with non-zero code: 190 是依赖解析冲突导致的安装中断。你直接从SDK37跨8个大版本升级到SDK45,当前项目内留存的Expo生态依赖、本地安装的CLI工具均为SDK37时期的旧版本,和SDK45的版本要求完全不兼容,npm v7+默认开启的严格peer依赖校验会直接终止安装流程。

修复步骤
  • 清理项目旧依赖文件
    先删除项目目录下的依赖目录和锁文件,避免旧锁文件的版本约束干扰安装:
    # macOS/Linux
    rm -rf node_modules package-lock.json
    
    # Windows PowerShell
    Remove-Item -Recurse -Force node_modules, package-lock.json
    
  • 处理冗余CLI依赖
    全局安装SDK45对应的稳定版expo-cli:
    npm install -g expo-cli@5.4.12
    
    打开项目package.json,删除cli、eas、eas-cli、expo-cli四个字段,这类工具不需要本地安装,旧版本本地依赖会直接导致升级流程异常。
  • 修正核心依赖版本
    将package.json中Expo相关核心依赖替换为SDK45匹配的版本范围:
    "expo": "~45.0.0",
    "expo-ads-admob": "~13.0.0",
    "expo-asset": "~8.5.0",
    "expo-font": "~10.1.0"
    
    非核心第三方依赖可以暂时注释,等核心环境跑通后再逐个恢复适配。
  • 重新安装依赖
    执行安装命令时添加--legacy-peer-deps参数,临时跳过严格peer依赖校验,解决跨版本冲突问题:
    npm install --legacy-peer-deps
    
  • 校验升级结果
    依赖安装完成后执行校验命令:
    expo doctor
    
    按照命令提示修复剩余不兼容依赖,所有校验项通过后执行expo start验证项目启动正常即可。
补充说明
  • SDK45要求Node.js最低版本为14.18.0,如果当前Node版本低于该要求,先升级Node.js再执行上述步骤。
  • 如果安装过程中持续报缓存相关错误,执行npm cache clean --force清理npm缓存后重试。
  • 跨大版本升级不建议一次跳过多版本,后续升级可以逐版本迭代,降低依赖冲突概率。

内容的提问来源于stack exchange,提问作者er123

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 07:54:22