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

构建后找不到Angular输出文件夹的GitHub Action问题

问题原因

GitHub Actions里每个Job都是在独立的虚拟机环境中运行的,彼此的文件系统完全隔离。你的build Job生成的./dist/目录只存在于它自己的runner环境里,deploy Job重新执行actions/checkout@v3只会拉取原始源码,不会带上build Job的构建产物,自然找不到./dist/目录。

解决方案

有两种实用的修复方式,按需选择:

方案一:合并构建与部署到同一个Job

把部署步骤直接放到build Job里,所有步骤在同一个runner环境执行,构建产物可以直接被使用,流程更简单:

name: 🛠️ Build Angular App
on:
  push:
    branches:
      - main

jobs:
  build-and-deploy:
    runs-on: ubuntu-latest
    strategy:
      matrix:
        node-version: [16.x]

    steps:
      - uses: actions/checkout@v3

      - name: Cache node modules
        uses: actions/cache@v1
        with:
          path: ~/.npm
          key: ${{ runner.os }}-node-${{ hashFiles('**/package-lock.json') }}
          restore-keys: |
            ${{ runner.os }}-node-

      - name: Node ${{ matrix.node-version }}
        uses: actions/setup-node@v1
        with:
          node-version: ${{ matrix.node-version }}

      - name: npm ci and npm run build
        run: |
          npm ci
          npm run build

      - name: ⬆️ Upload Files via FTP
        uses: SamKirkland/FTP-Deploy-Action@v4.3.4
        with:
          server: ${{ secrets.ftp_host }}
          username: ${{ secrets.ftp_user }}
          password: ${{ secrets.ftp_password }}
          local-dir: "./dist/"
          server-dir: "public_html/test/"

方案二:用Artifact传递构建产物(多Job场景)

如果必须分开两个Job,比如需要不同的runner环境或依赖条件,可以用GitHub的Artifact功能在Job之间传递文件:

1. 修改build Job,添加上传构建产物的步骤

jobs:
  build:
    runs-on: ubuntu-latest
    strategy:
      matrix:
        node-version: [16.x]

    steps:
      - uses: actions/checkout@v3

      - name: Cache node modules
        uses: actions/cache@v1
        with:
          path: ~/.npm
          key: ${{ runner.os }}-node-${{ hashFiles('**/package-lock.json') }}
          restore-keys: |
            ${{ runner.os }}-node-

      - name: Node ${{ matrix.node-version }}
        uses: actions/setup-node@v1
        with:
          node-version: ${{ matrix.node-version }}

      - name: npm ci and npm run build
        run: |
          npm ci
          npm run build

      # 新增:把dist目录上传为Artifact
      - name: Upload build artifact
        uses: actions/upload-artifact@v3
        with:
          name: angular-dist
          path: ./dist/

2. 修改deploy Job,添加下载构建产物的步骤

deploy:
    name: 🚀 Deploy via FTP
    needs: [build]
    runs-on: ubuntu-latest
    steps:
      # 不用再checkout源码,直接下载之前上传的构建产物
      - name: Download build artifact
        uses: actions/download-artifact@v3
        with:
          name: angular-dist
          path: ./dist/ # 下载到当前目录的dist文件夹,保持路径一致

      - name: ⬆️ Upload Files
        uses: SamKirkland/FTP-Deploy-Action@v4.3.4
        with:
          server: ${{ secrets.ftp_host }}
          username: ${{ secrets.ftp_user }}
          password: ${{ secrets.ftp_password }}
          local-dir: "./dist/"
          server-dir: "public_html/test/"
额外提醒
  • 优先选方案一,流程更短更不容易出错;
  • 如果用方案二,要确保上传和下载的路径完全匹配;
  • 确认你的Angular项目构建输出确实是./dist/,如果项目配置了自定义输出目录,要同步修改所有相关路径参数。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.14 19:22:32