Expo项目npm install出现42个依赖漏洞 audit fix报错如何解决?
解决步骤
第一步:修复peer依赖冲突
你遇到的ERESOLVE报错核心原因是react-native@0.66.1要求peer依赖的react版本为17.0.2,但你当前package.json中固定的react版本是17.0.1,版本不匹配导致:
- 修改package.json中的依赖版本:把
react和react-dom的版本号从17.0.1改为17.0.2 - 删除项目根目录下的
node_modules文件夹和package-lock.json文件 - 执行安装命令:
npm install --legacy-peer-deps
第二步:合理处理npm audit漏洞
首先要明确:React Native/Expo生态的项目,npm audit上报的大部分漏洞都不会实际影响线上业务,这些漏洞大多出现在Node.js服务端场景的子依赖中,而React Native打包后运行在客户端,根本没有触发漏洞的环境。如果确实要减少漏洞数量,可以按以下优先级处理:
- 先执行
npm audit查看每个漏洞对应的依赖路径,判断漏洞是否和你的业务场景相关:如果漏洞属于开发依赖、或者是不会被你的代码调用的深层子依赖,直接忽略即可。 - 升级停止维护的直接依赖:你当前使用的
react-navigation@4.x已经停止维护,升级到最新的react-navigation@6.x版本可以解决大量依赖链带来的漏洞,同时也可以把axios升级到最新的稳定版。 - 针对必须修复的间接依赖漏洞,你可以使用npm v8.3及以上版本支持的
overrides功能,在package.json中添加配置强制指定子依赖的安全版本,示例如下:
{ // 原有配置不变,新增以下字段 "overrides": { "存在漏洞的依赖包名": "^安全版本号" } }
修改后重新执行npm install --legacy-peer-deps即可生效。
4. 如果漏洞来自Expo官方管理的核心依赖,不要自行强行升级,等待Expo官方推送兼容的版本更新即可,自行升级很可能导致Expo项目运行异常。
内容的提问来源于stack exchange,提问作者mpaun
相关产品推荐
相关产品推荐

