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

如何在GitHub Action中指定Node.js项目的运行路径?

问题根因

GitHub Actions的每个run指令对应独立的shell进程,所有进程默认启动位置都是仓库的根工作目录。你单独执行的cd backend_app仅在对应步骤的进程内生效,后续执行npm相关命令时会自动回到根目录,自然找不到存放在子目录内的package.json文件。

可用解决方案

方案1:为npm步骤指定工作目录(最推荐)

直接在run步骤中添加working-directory参数显式指定执行路径,可读性和可维护性最高:

steps:
- uses: actions/checkout@v3
  with: 
    path: backend_app
- name: Use Node.js ${{ matrix.node-version }}
  uses: actions/setup-node@v3
  with:
    node-version: ${{ matrix.node-version }}
- run: npm ci
  working-directory: backend_app
- run: npm run build --if-present
  working-directory: backend_app
- run: npm test
  working-directory: backend_app

方案2:合并所有命令到同一个run步骤

同一个shell进程内的目录切换会持续生效,用换行把所有命令放在同一个run块内即可:

- run: |
    cd backend_app
    npm ci
    npm run build --if-present
    npm test

方案3:使用npm原生参数指定执行目录

不需要切换目录,直接通过--prefix参数告知npm要操作的目录路径:

- run: npm ci --prefix backend_app
- run: npm run build --if-present --prefix backend_app
- run: npm test --prefix backend_app

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.16 02:06:04