GitHub Actions中执行npm ci失败求助:缺少lock文件报错
问题排查与解决
错误原因
你遇到的EUSAGE错误核心有两个原因:
- GitHub Actions Runner未拉取仓库代码:当前流水线仅配置了Node环境,但没有将你的仓库代码克隆到runner工作目录中,导致runner里既没有
package.json,也没有package-lock.json。 npm ci的特性限制:npm ci是专为持续集成环境设计的命令,它要求必须存在package-lock.json或npm-shrinkwrap.json文件,且lock文件版本≥1,否则无法执行。
修复步骤
1. 添加代码拉取步骤
在setup-node步骤之前,添加actions/checkout动作,将仓库代码拉取到runner环境:
name: Veracode frontend Scan on: workflow_dispatch: jobs: veracode: runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 # 新增:拉取仓库代码 - uses: actions/setup-node@v3 with: node-version: 16 - run: npm ci
2. 确保仓库已提交package-lock.json
在本地项目目录执行npm install(需使用npm 5及以上版本),生成package-lock.json文件,然后将该文件提交并推送到GitHub仓库。只有仓库里存在这个文件,npm ci才能正常执行。
备选方案(不推荐用于CI环境)
如果暂时无法提供package-lock.json,可以将npm ci替换为npm install,但npm install会根据package.json重新解析依赖,可能导致每次构建的依赖版本不一致,不利于流水线的稳定性:
- run: npm install
内容的提问来源于stack exchange,提问作者learner
相关产品推荐
相关产品推荐

