如何修复package-lock.json中npm audit fix无法解决的tar版本漏洞问题
根因说明
漏洞来自create-react-app依赖的tar-pack包,该包已停止维护,其内部依赖声明固定了tar的版本范围为 <=4.4.17,和你全局安装的高版本tar不冲突。npm audit fix无法自动修复、手动修改lockfile会回退,都是因为npm会严格按照依赖包声明的版本范围校验依赖版本,不符合范围的会自动还原。
解决方案
方案1(最推荐):卸载全局安装的
create-react-app
官方早已不推荐全局安装create-react-app,全局版本不仅容易有依赖漏洞,还会出现版本滞后问题。执行命令卸载:npm uninstall -g create-react-app后续创建React项目直接使用
npx命令即可,每次都会拉取最新的官方版本,不会残留全局依赖:npx create-react-app 你的项目名称卸载后重新执行
npm audit就不会再报该漏洞。方案2:使用npm overrides强制覆盖依赖版本
如果你需要保留全局create-react-app,或是项目内依赖存在该问题,可以通过npm的overrides功能强制替换低版本tar:- 先将npm升级到8.3及以上版本(支持overrides功能):
npm install -g npm@latest- 在项目根目录的
package.json中添加如下配置:
{ "overrides": { "tar-pack": { "tar": "^6.1.11" } } }- 删除项目下的
node_modules文件夹和package-lock.json文件,重新执行npm install即可。
方案3(临时兼容):忽略漏洞
该漏洞的触发需要恶意构造的tar包,且其中Windows相关的漏洞完全不影响Mac系统,如果你只是本地开发使用,可以选择暂时忽略,执行审计时添加过滤参数即可:npm audit --omit=dev
内容的提问来源于stack exchange,提问作者gr6okn
相关产品推荐
相关产品推荐

