GitHub Action Vitest CI流水线报错:缺少uses/run键求助
Vue3 + Vitest项目GitHub Action CI配置报错修复
问题描述
我给基于Vue3开发的前端项目搭建GitHub Action CI流水线,用Vitest执行测试,前端代码存放在根目录的WEB文件夹中。希望主分支每次提交时自动运行测试,但遇到如下报错:
Error: .github#L1
each step must define ausesorrunkey
我的.yml配置文件基于Node.js模板修改,仅添加了working-directory指定WEB文件夹,内容如下:
name: Runs frontend tests on: push: branches: [main] pull_request: branches: [main] jobs: build: runs-on: ubuntu-latest strategy: matrix: node-version: [16.x] steps: - uses: actions/checkout@v3 - name: Use Node.js ${{ matrix.node-version }} working-directory: ./WEB uses: actions/setup-node@v3 with: node-version: ${{ matrix.node-version }} cache: 'npm' - name: Execute Unit tests - run: npm ci - run: npm run test
错误原因
- 无效步骤触发报错:配置里的
- name: Execute Unit tests仅定义了步骤名称,没有对应的uses(调用现成Action)或run(执行命令)字段,GitHub Action要求每个步骤必须二选一,这是直接报错的原因。 - 工作目录未正确配置:后续的
npm ci和npm run test未指定working-directory,会默认在仓库根目录执行,但前端代码在WEB文件夹,根目录没有package.json,就算修复第一个错误,也会出现找不到依赖的问题。
修复后的完整配置
name: Runs frontend tests on: push: branches: [main] pull_request: branches: [main] jobs: build: runs-on: ubuntu-latest strategy: matrix: node-version: [16.x] steps: - uses: actions/checkout@v3 - name: Use Node.js ${{ matrix.node-version }} uses: actions/setup-node@v3 with: node-version: ${{ matrix.node-version }} cache: 'npm' cache-dependency-path: './WEB/package-lock.json' # 针对WEB目录的依赖缓存 - name: Execute Unit tests working-directory: ./WEB run: | npm ci npm run test
关键修改点
- 合并单独的
Execute Unit tests步骤与后续命令,用run: |执行多行命令,确保每个步骤都有合法的run字段。 - 给测试步骤添加
working-directory: ./WEB,让npm命令在前端代码目录执行。 - 给
setup-node步骤添加cache-dependency-path,指定WEB目录下的package-lock.json,保证npm依赖缓存能正确命中,加快流水线运行速度。
内容的提问来源于stack exchange,提问作者Kardier
相关产品推荐
相关产品推荐

