运行npm install提示1个中危漏洞且npm audit fix无法修复如何解决
问题解答
手动修改package-lock.json失效属于正常现象
package-lock.json是npm根据package.json声明的依赖版本规则自动计算生成的依赖锁文件,设计上就不推荐人工直接编辑。你手动修改里面的传递依赖版本后,执行npm install时npm会按照顶层依赖的版本约束重新构建完整依赖树,自动覆盖你手动修改的内容,所以这种操作本身就无法持久生效。- 你看到的fsevents相关跳过警告完全不需要处理:fsevents是macOS平台专属的文件系统监听依赖,Windows环境下npm会自动跳过该可选依赖的安装,不属于报错。
该中危漏洞的处理方法
首先明确:这个漏洞存在于开发依赖nodemon的传递依赖链中,仅在开发环境生效,不会被打包到生产环境代码,实际触发风险极低,你可以根据自身需求选择以下任意一种方案处理:
- 方案1:升级nodemon到最新版本
直接执行以下命令将开发依赖nodemon升级到最新版,新版nodemon已经将依赖链中的got包升级到了11.8.5以上的安全版本:
执行完成后重新运行npm install nodemon@latest --save-devnpm audit即可看到漏洞警告消失。 - 方案2:通过overrides强制指定安全版本的got
如果暂时不想升级nodemon版本,且你的npm版本在8.3.0及以上(可以执行npm -v确认版本),可以直接在项目根目录的package.json中添加overrides字段,强制所有依赖链下的got使用安全版本:
添加完成后删除项目下的{ "overrides": { "got": "^11.8.5" } }node_modules文件夹和原有package-lock.json文件,重新执行npm install即可,npm会按照你声明的覆盖规则安装安全版本的got,消除漏洞警告。 - 方案3:直接忽略该漏洞警告
如果你的项目没有强制的安全审计、等保合规要求,完全可以直接忽略这个警告。该漏洞的触发条件非常苛刻,需要开发环境下主动请求恶意构造的地址才可能触发UNIX socket重定向问题,正常本地开发不会受到影响。
注意:处理依赖问题时不要直接手动编辑
package-lock.json,这类修改不仅会被npm自动覆盖,还可能破坏依赖树一致性,导致项目运行出现莫名的依赖兼容问题。
内容的提问来源于stack exchange,提问作者Roman N.
相关产品推荐
相关产品推荐

