如何修复npm audit fix无法解决的NPM依赖安全漏洞问题
解决步骤
问题根源
你遇到的报错和漏洞提示均来自react-scripts@4.0.3的嵌套依赖限制:该版本锁死了@babel/core、dns-packet等间接依赖的版本,低版本存在安全漏洞但直接执行npm audit fix会强制将react-scripts降级到存在大量兼容性问题的1.1.5版本,因此无法自动修复。安装redux和react-redux后触发全量依赖校验,才显示出存量的漏洞提示,和redux本身无关。
方案1:强制指定安全依赖版本(推荐)
npm 8.3及以上版本支持overrides配置,可强制将嵌套依赖升级到安全版本,操作如下:
- 在项目根目录的
package.json中新增overrides字段:
{ "name": "你的项目名", "version": "1.0.0", // 原有配置保持不变 "overrides": { "dns-packet": "^5.2.3", "browserslist": "^4.16.5", "postcss": "^8.2.10" } }
- 删除项目根目录的
node_modules文件夹和package-lock.json文件 - 执行安装命令:
npm install --legacy-peer-deps
操作完成后再执行npm audit即可看到漏洞已修复。
方案2:升级react-scripts到最新版
react-scripts5.x版本已经修复了上述依赖漏洞,直接升级即可解决问题:
执行以下命令完成升级,--legacy-peer-deps参数可跳过对等依赖校验,解决ERESOLVE报错:
npm install react-scripts@latest --legacy-peer-deps
补充说明
- 如果你仅在本地开发环境使用项目,这些间接开发依赖的漏洞、废弃提示不会影响业务功能,生产打包也不会将这类开发依赖打包到产物中,不强制要求修复也可正常使用
- 升级全局npm的操作对项目内部依赖问题没有帮助,不需要再执行相关命令
内容的提问来源于stack exchange,提问作者Cole Ogrodnick
相关产品推荐
相关产品推荐

