You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用GitHub Actions运行Jest单元测试时遇ENOENT错误的解决方法

问题解决方法

你的错误核心原因是:GitHub Actions中每个run步骤会启动独立的Shell会话,执行cd frontend仅在当前步骤生效,后续的npm install和npm test仍会回到仓库根目录执行,自然找不到frontend文件夹里的package.json。

以下是两种可行的解决方式:

方式一:合并命令到同一个run步骤

将需要在frontend目录执行的命令合并到同一个run中,确保目录切换后后续命令在目标目录执行:

run-unit-tests:
  runs-on: ubuntu-latest
  steps:
    - uses: actions/checkout@v3
    - uses: actions/setup-node@v3
      with:
        node-version: '14'
    - run: cd frontend && npm install && npm test

也可以用多行格式提高可读性:

run-unit-tests:
  runs-on: ubuntu-latest
  steps:
    - uses: actions/checkout@v3
    - uses: actions/setup-node@v3
      with:
        node-version: '14'
    - run: |
        cd frontend
        npm install
        npm test

方式二:指定working-directory参数

通过GitHub Actions的working-directory属性,直接指定步骤的工作目录,无需手动切换:

单个步骤指定

run-unit-tests:
  runs-on: ubuntu-latest
  steps:
    - uses: actions/checkout@v3
    - uses: actions/setup-node@v3
      with:
        node-version: '14'
    - run: npm install
      working-directory: frontend
    - run: npm test
      working-directory: frontend

整个Job默认指定

如果Job中所有run步骤都需要在frontend目录执行,可设置Job级别的默认工作目录:

run-unit-tests:
  runs-on: ubuntu-latest
  defaults:
    run:
      working-directory: frontend
  steps:
    - uses: actions/checkout@v3
    - uses: actions/setup-node@v3
      with:
        node-version: '14'
    - run: npm install
    - run: npm test

内容的提问来源于stack exchange,提问作者shiz

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.12 08:15:43