Expo项目SDK41升级至44后npm install报ERESOLVE依赖树错误
Expo SDK 41升44后依赖报错解决方案
问题复现
已存在的Expo项目按如下流程从SDK41升级到SDK44:
- 全局升级Expo CLI至5.4.3及以上版本:执行
npm i -g expo-cli - 进入项目目录执行
expo upgrade完成升级
升级后执行expo start启动项目,抛出错误:
Unable to find expo in this project - have you run yarn / npm install yet?
执行npm install尝试安装依赖时,再次抛出依赖解析错误:
ERESOLVE unable to resolve dependency tree while installing a package
报错参考截图:
运行环境为MacOS。
解决步骤
- 清理残留依赖文件
升级过程中旧的依赖目录、版本锁文件残留是依赖树冲突的主要原因,先在项目根目录执行命令彻底清理:
rm -rf node_modules package-lock.json yarn.lock
- 绕过npm严格peer依赖校验
npm 7.0+版本默认开启严格peer依赖校验规则,Expo SDK44适配周期内部分第三方包未同步更新peer依赖声明,会直接触发ERESOLVE报错,两种方案选其一即可:
- 临时方案:安装依赖时追加参数跳过校验
npm install --legacy-peer-deps - 永久方案:在项目根目录新建
.npmrc文件,写入如下配置,后续执行npm命令默认跳过严格peer依赖校验:
保存配置后直接执行legacy-peer-deps=truenpm install即可完成依赖安装。
- 修复Expo依赖版本对齐
依赖安装完成后执行命令,自动将所有Expo关联依赖调整至匹配SDK44的兼容版本,避免版本错位:
expo install --fix
- 启动验证
执行expo start启动项目,此前的找不到expo包、依赖树解析错误即可解决。
避坑说明
- 操作前先校验全局Expo CLI版本:执行
expo --version确认版本号≥5.4.3,版本不符时执行npm i -g expo-cli@5.4.3安装指定兼容版本,避免CLI与项目SDK版本不兼容导致升级流程异常。 - 使用Yarn作为包管理器的场景下,清理残留文件后直接执行
yarn install即可,Yarn不会对peer依赖冲突做强制阻断,不会触发ERESOLVE报错。 - 完成上述步骤后仍存在依赖报错的,逐一排查
package.json中手动引入的第三方原生依赖,确认其版本兼容Expo SDK44,升级不兼容依赖到对应适配版本即可。
内容的提问来源于stack exchange,提问作者SHEHARYAR AFTAB
相关产品推荐
相关产品推荐


