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

使用Expo 45搭配React-Native 0.68.2时出现critical漏洞如何解决

Expo 45 项目shell-quote高危漏洞兼容修复方案

这个漏洞属于依赖链上的间接依赖问题,不需要按照audit提示强制升级不兼容的React Native 0.69.0版本,通过包管理器的依赖版本强制覆写能力,就能在保留Expo 45适配依赖的前提下修复漏洞。

方案1:npm项目修复(npm 8.3及以上版本支持)

  • 打开项目根目录下的package.json文件,新增顶层overrides字段,强制所有层级的依赖都使用修复了漏洞的shell-quote 1.7.3版本:
{
  // 你项目里已有的name、version、dependencies等字段保留不动
  "overrides": {
    "shell-quote": "1.7.3"
  }
}
  • 保存文件后,删除项目根目录下的node_modules文件夹和package-lock.json文件,重新执行npm install完成依赖安装。
  • 安装完成后执行npm audit校验,critical级别的漏洞告警会直接消除,此时React Native版本仍然保持Expo 45要求的适配版本,不会出现兼容问题。

方案2:Yarn项目修复

  • 如果项目使用Yarn作为包管理工具,打开根目录package.json文件,新增顶层resolutions字段实现版本锁定:
{
  // 保留所有已有配置字段
  "resolutions": {
    "shell-quote": "1.7.3"
  }
}
  • 删除node_modules文件夹和yarn.lock文件后,执行yarn install重装依赖,完成后校验漏洞状态和依赖版本即可。

关键注意事项

  • 严禁直接执行npm audit fix --force:该命令会无视项目的版本依赖约束,强制升级顶层依赖到最新版,直接将React Native升级到和Expo 45不兼容的0.69.0版本,会导致项目无法正常启动运行。
  • shell-quote@1.7.3是纯安全补丁版本,没有任何破坏性API变更,完全向后兼容,Expo 45依赖链上所有引用该包的上层依赖都可以正常运行,不会出现功能异常。
  • 如果本地npm版本低于8.3,先执行npm install -g npm@8升级npm到支持overrides特性的版本,再执行上述修复操作。
  • 后续如果升级到Expo 46及更高版本,官方已经在依赖链中默认锁定了安全版本的shell-quote,届时可以删除手动添加的overrides/resolutions配置。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 16:06:26