npx create-react-app高危漏洞提示 npm audit报ENOLOCK错误如何解决
报错原因
流程卡住由两类问题导致:
- 核心报错
ENOLOCK:npm audit 命令必须依赖项目目录下的package-lock.json锁文件才能解析完整依赖树开展漏洞扫描,当前目录缺失该文件因此直接执行失败。 - 开头的
--global/--local废弃警告是npm 8+版本的参数变更提示,不影响核心命令执行,不属于阻断性报错。
修复操作步骤
- 首先切到用
npx create-react-app生成的项目根目录,确认当前目录存在package.json文件,不要在上层或其他无关目录执行后续命令。 - 执行命令生成缺失的锁文件:
npm i --package-lock-only
该命令只会根据现有package.json的依赖声明生成对应版本的锁文件,不会修改node_modules里已安装的依赖,也不会改动依赖版本。
- 锁文件生成完成后,即可正常执行漏洞扫描:
npm audit
执行后会列出所有依赖(包括传递依赖)的漏洞等级、影响范围、修复版本信息。
- 漏洞修复注意事项:
- 先执行无破坏性的兼容版本修复,不会引入不兼容变更:
npm audit fix- 执行完上述命令后如果仍有剩余漏洞,再评估是否执行强制修复。注意
npm audit fix --force会跨大版本升级存在漏洞的依赖,包括react-scripts这类核心构建依赖,大概率引入破坏性变更导致项目无法正常启动,执行前务必把当前代码提交到git做版本备份,方便出问题回滚。 - create-react-app项目里绝大多数高危漏洞属于react-scripts带入的开发环境传递依赖,不会被打包到生产环境代码中,如果强制修复后项目启动报错,可以回退锁文件,等待react-scripts官方更新依赖版本即可,不需要强行处理所有开发依赖漏洞。
- (可选)消除全局参数警告:后续执行全局安装类命令时,把旧的
-g/--global参数替换为--location=global即可,比如原全局安装命令npm install -g xxx改为npm install --location=global xxx,就不会再出现参数废弃的提示。
内容的提问来源于stack exchange,提问作者Jyothi
相关产品推荐
相关产品推荐

