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

如何使用GitHub Workflow部署React/Gatsby项目到GitHub Pages并解决图片异常

问题排查与修复方案

1. 修正执行命令不匹配问题

你本地手动部署执行的是npm run deploy,但当前Workflow中执行的是npm run build,两者逻辑不一致是最常见的故障原因。通常Gatsby项目的deploy命令会包含路径前缀处理、资源优化等专属逻辑,直接替换Workflow中的构建命令即可:
将原有配置中的

- run: npm run build

替换为

- run: npm run deploy

2. 补全代码拉取配置

你当前使用的actions/checkout@v2默认仅拉取最近1次提交的浅拷贝,如果你的图片资源存在历史依赖或通过Git LFS存储,会导致CI环境下资源拉取不全,引发图片缺失。修改checkout步骤配置如下:

- uses: actions/checkout@v4
  with:
    fetch-depth: 0 # 拉取全量提交历史
    lfs: true # 未使用Git LFS存储图片可删除该行

3. 校验Gatsby路径前缀配置

如果你的GitHub Pages部署在用户名.github.io/仓库名的子路径下,需要在gatsby-config.js中正确配置pathPrefix为你的仓库名,同时构建命令需要添加--prefix-paths参数,示例配置如下:

// package.json scripts字段示例
"deploy": "gatsby build --prefix-paths && gh-pages -d public"

未添加该参数时,CI构建出的资源路径会指向根域名,子路径下的图片会返回404错误。

4. 统一版本避免兼容性问题

你当前使用的Action版本、Node版本均较老,和新的Gatsby依赖可能存在兼容性问题,建议将所有Action升级到最新稳定版,同时将CI的Node版本调整为你本地开发使用的版本,保证构建产物一致。

修改后的完整Workflow配置参考:

name: GitHub Pages

on:
  push:
    branches:
      - main
  pull_request:

jobs:
  deploy:
    runs-on: ubuntu-latest
    concurrency:
      group: ${{ github.workflow }}-${{ github.ref }}
    steps:
      - uses: actions/checkout@v4
        with:
          fetch-depth: 0

      - name: Setup Node
        uses: actions/setup-node@v4
        with:
          node-version: '18' # 替换为你本地使用的Node版本
          cache: 'npm'

      - run: npm ci
      - run: npm run format
      - run: npm run deploy

      - name: Deploy
        uses: peaceiris/actions-gh-pages@v4
        if: ${{ github.ref == 'refs/heads/main' }}
        with:
          github_token: ${{ secrets.GITHUB_TOKEN }}
          publish_dir: ./public

内容的提问来源于stack exchange,提问作者J.erome

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 09:57:02