将react-scripts移至devDependencies后npm audit --production仍报漏洞怎么办
问题原因
- 你使用的是npm 7及以上版本,该版本开始默认将peer依赖纳入audit扫描范围,即使
react-scripts已经放在devDependencies中,它关联的peer依赖漏洞仍会被npm audit --production扫描到。 - 你当前的package.json还存在错误的依赖分类:
@testing-library/jest-dom、@testing-library/react、@testing-library/user-event三个测试相关的包属于开发工具,不应该放在生产依赖dependencies中。 - 你修改package.json后没有重新生成依赖树,旧的安装记录还保留在
package-lock.json和node_modules中,扫描时依然会读取旧的依赖信息。
解决步骤
- 先把三个测试相关包移动到
devDependencies中,修改后的依赖结构如下:
"dependencies": { "react": "^17.0.2", "react-dom": "^17.0.2", "web-vitals": "^1.1.2" }, "devDependencies": { "@testing-library/jest-dom": "^5.15.0", "@testing-library/react": "^11.2.7", "@testing-library/user-event": "^12.8.3", "react-scripts": "4.0.3" }
- 删除项目根目录下的
node_modules文件夹和package-lock.json文件 - 重新执行
npm install安装依赖 - 再次执行
npm audit --production,如果使用的是npm 8及以上版本,可以执行npm audit --production --omit=peer忽略peer依赖的扫描结果,就不会再出现相关告警。
补充说明
这些告警涉及的都是开发工具链的依赖,并不会被打包到最终上线的生产代码中,即使暂时没有消除告警,也不会影响线上环境的安全性。如果想要彻底解决所有漏洞告警,可以将react-scripts升级到5.x以上的稳定版本,该版本已经修复了旧版本依赖的绝大多数安全问题。
内容的提问来源于stack exchange,提问作者Timothy Pulliam
相关产品推荐
相关产品推荐

