AWS Amplify场景下安装@aws-cdk/aws-s3报ERESOLVE错误如何解决
问题根因
该ERESOLVE报错与Firebase、待安装的@aws-cdk/aws-s3包本身无直接关联,是npm 7及以上版本默认开启严格peer依赖校验触发的版本互斥问题,核心冲突点如下:
- 项目内安装的
react-native@0.69.0强制要求peer依赖为react@18.0.0 - 项目当前锁定的react版本为17.0.2,且
aws-amplify-react-native@6.0.5、其关联的@react-native-picker/picker@2.4.2等依赖的peer规则仅支持react 16/17版本,与react-native 0.69的版本要求完全互斥 - 只要项目依赖树中存在这组未解决的冲突,执行任何npm安装操作(包括安装和冲突完全无关的包)都会直接抛出ERESOLVE错误,阻断安装流程。
解决步骤
按优先级从高到低尝试:
方案1:对齐依赖版本(无运行时风险,优先选择)
二选一调整依赖即可:
- 降级react-native匹配现有react 17环境:react-native 0.68.x及更早版本原生适配react 17,同时匹配aws-amplify-react-native@6.x的版本要求,执行以下命令安装对应版本:
npm install react-native@0.68.2
- 升级全量依赖适配react 18环境:
aws-amplify-react-native@6.x最高仅支持到react-native 0.68,要适配react-native 0.69+和react 18,需要将其替换为后续维护的@aws-amplify/ui-react-native包,同步升级@react-native-picker/picker等关联依赖到支持react 18的版本,对齐所有包的peer依赖要求。
方案2:临时跳过peer依赖校验
如果短期内无法调整现有依赖版本,可以在安装命令后追加--legacy-peer-deps参数,让npm沿用v6及之前版本的逻辑,忽略peer依赖冲突强制完成安装:
npm install @aws-cdk/aws-s3 --legacy-peer-deps
如果不想每次执行安装命令都加该参数,可以在项目根目录新建.npmrc文件,写入以下配置永久生效:
legacy-peer-deps=true
风险提示:该方案仅跳过依赖校验步骤,不解决实际版本不兼容问题,如果依赖间存在API breaking change,项目运行时可能出现不可预期的报错。
额外排查优化点
- 清理旧依赖缓存:确认
package.json中无残留Firebase相关依赖条目后,删除项目根目录下的node_modules文件夹和package-lock.json文件,再重新执行安装,避免旧锁文件残留的依赖规则导致冲突误判。 - 拆分依赖环境:
@aws-cdk/aws-s3属于服务端CDK基础设施包,正常运行在Node.js环境,不需要打入React Native前端包。如果你的仓库同时存了前端和CDK部署代码,建议将CDK相关代码拆到独立子目录,初始化单独的package.json管理依赖,从根源上避免前端依赖和服务端依赖的校验冲突。
内容的提问来源于stack exchange,提问作者idevelopapps
相关产品推荐
相关产品推荐

