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

在GitHub复合Action中安装的node_modules无法被调用Job访问

解决GitHub Actions复合Action生成的node_modules无法被主Job访问的问题

问题核心是复合Action的步骤未与主Job使用相同工作目录,导致node_modules被安装到错误路径,主Job后续步骤在默认的./backend目录下无法找到它。以下是具体解决方法:

1. 给复合Action添加工作目录参数

修改复合Action的定义文件(通常为action.yml),新增working-directory输入参数,让所有步骤都基于该目录执行:

name: 'Setup Node & Install Dependencies'
description: '复用Node环境配置与依赖安装步骤'
inputs:
  working-directory:
    description: '执行命令的目标目录'
    required: true
runs:
  using: 'composite'
  steps:
    - name: 配置Node.js环境
      uses: actions/setup-node@v4
      with:
        node-version: 20 # 替换为你需要的Node版本
        cache: 'npm'
        cache-dependency-path: ${{ inputs.working-directory }}/package-lock.json

    - name: 安装依赖
      run: npm ci
      shell: bash
      working-directory: ${{ inputs.working-directory }}

    - name: 调试 - 查看当前目录文件
      run: ls -a && pwd
      shell: bash
      working-directory: ${{ inputs.working-directory }}

2. 主工作流调用时传递工作目录

在主工作流中,调用复合Action时显式传入主Job的默认工作目录./backend:

name: 主工作流
on: [push, pull_request]
defaults:
  run:
    working-directory: ./backend

jobs:
  build-and-test:
    runs-on: ubuntu-latest
    steps:
      - name: 检出代码
        uses: actions/checkout@v4

      - name: 调用复合Action配置环境并安装依赖
        uses: ./path/to/your/composite-action # 替换为你的复合Action实际路径
        with:
          working-directory: ./backend

      - name: 验证node_modules是否存在
        run: ls -a && pwd

3. 关键验证步骤

在复合Action和主Job的步骤中都加入pwd命令,确认两者的工作目录完全一致——这是保证node_modules路径统一的核心前提。

问题根源说明

复合Action默认会在自身执行目录(而非主Job的默认目录)下运行命令,导致npm ci生成的node_modules不在主Job后续步骤的访问路径中。通过显式传递并使用工作目录参数,可让所有步骤共享同一路径,自然就能访问到生成的依赖目录。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.18 13:26:08