使用npm创建Vue2项目出现20个漏洞,npm audit fix无效该如何解决?
问题根源
所有漏洞均来自@vue/cli-service的开发依赖链,这类依赖仅在本地开发、打包构建阶段运行,不会被打包到线上生产环境代码中,本身不会对线上业务造成安全风险。执行npm audit fix --force后漏洞数量上升,是因为强制升级触发了跨版本依赖冲突,引入了更多存在问题的旧版本依赖。
正确解决方式
方案1:强制指定安全子依赖版本(无破坏性,优先推荐)
如果使用的npm版本≥8.3.0,直接在项目package.json中添加overrides字段,强制所有依赖链使用漏洞已修复的版本:
{ "overrides": { "css-what": "^5.0.1", "glob-parent": "^5.1.2", "serialize-javascript": "^4.0.0", "ssri": "^6.0.2" } }
如果使用yarn作为包管理器,添加resolutions字段即可:
{ "resolutions": { "css-what": "^5.0.1", "glob-parent": "^5.1.2", "serialize-javascript": "^4.0.0", "ssri": "^6.0.2" } }
配置完成后,删除项目根目录下的node_modules文件夹、package-lock.json(或yarn.lock)锁文件,重新执行依赖安装命令即可,再次执行npm audit不会再触发相关漏洞提示。
方案2:升级@vue/cli-service兼容版本
如果项目可以接受脚手架小版本升级,直接将@vue/cli-service升级到4.x分支的最新修复版即可解决所有依赖链问题:
npm install @vue/cli-service@~4.5.19 --save-dev
执行安装前同样需要删除旧的锁文件和node_modules文件夹,避免版本冲突。
方案3:忽略开发依赖漏洞
如果确认不需要处理开发阶段的安全提示,可执行以下命令仅检查生产依赖的漏洞:
npm audit --production
也可以在项目根目录的.npmrc文件中添加以下配置,关闭全局审计提示:
audit=false
内容的提问来源于stack exchange,提问作者JohnA
相关产品推荐
相关产品推荐

