我们看上图的提示说可以使用
npm audit fix
来解决问题,那么
npm audit
到底是干什么的呢?为什么可以通过
npm audit fix
可以解决问题。让我们赶紧去
npm
的官网去查看一波。
官网介绍:
npm audit
允许开发人员分析复杂的代码,并查明特定的漏洞和缺陷。
npm audit fix
检测项目依赖中的漏洞并自动安装需要更新的有漏洞的依赖,而不必再自己进行跟踪和修复。
当然还有其他的一些命令:
npm audit fix --package-lock-only
npm audit fix --only=prod
npm audit fix --force
npm audit fix --dry-run --json
复制代码
还有一些命令请自行查看
文档
。
那么我们知道了它是通过分析
package-lock.json
文件,继而扫描我们的包还分析是否包含漏洞的,那么有没有办法不让他扫描呢?
找到问题后,我的第一反应是可以不可以通过配置关闭这个分析功能呢(大佬第一反应可能是怎么解决)。
通过查看文档我们发现
npm audit
是可以通过配置来进行关闭的。那么我们首先来看一下我们的配置都有哪些,是通过哪个配置来管理分析功能的。
# 执行下面的命令输出我们的 npm config
npm config ls -l
可以看到会输出很多默认的配置,审计分析功能就是由 audit = true
这个属性控制的。
我们还可以看到 audit-level = "low"
来控制漏洞的危险等级。
那么我们就可以通过修改这些配置来到达关闭审计分析的功能。
# 将 audit 设置成 false 关闭分析功能
npm set audit false
# 设置分析漏洞危险等级,有4个选项: 'low(低)', 'moderate(中等)', 'high(高危)', 'critical(紧要)'
npm set audit-level high
复制代码
好了,世界清静了,再也不会出现这些漏洞报告了~~~~
然而有的小伙伴就会担心,我的项目有了漏洞,真的被攻击了(虽然我认为几率很小)怎么办?
那就只能老老实实的执行 npm audit fix
去修复了。
有的小伙伴又会说我执行完还是没有修复,那是什么原因呢?
为什么执行 npm audit fix
后还是没有修复
那是因为不是所有依赖都可以通过 npm
命令来更新解决漏洞。
比如有些包是 node-gyp
的第三方依赖包,这些不能通过 npm
命令来修改的,只能自己手动修复。
在 node_modules > node_gyp > package.json
中找到要更新的包,手动修改 package.json
中包的版本,修改到最新版本。然后运行 npm audit fix
即可。