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

dotenv-webpack配置的环境变量在Github Actions中不生效如何解决?

问题修复方案

问题根源

你将APP_BASE环境变量配置在了S3同步的步骤下,仅该步骤可读取该变量,但执行npm run build的前置步骤无法获取该变量。同时你的代码仓库未提交.env文件,dotenv-webpack既无法读取本地.env文件,也无法获取系统环境变量中的APP_BASE,因此触发报错、变量替换失败。

修复步骤

1. 调整GitHub Actions环境变量位置

将APP_BASE移至npm run build可读取的作用域下,修改后的workflow.yml示例如下:

name: React CI

on:
    push:
        branches:
            - "main"

jobs:
    build:
        runs-on: ubuntu-latest
        # 配置为整个Job的全局环境变量,所有步骤都可读取
        env:
          APP_BASE: ${{ secrets.APP_BASE }}

        strategy:
            matrix:
                node-version: [15.x]

        steps:
            - uses: actions/checkout@v1
            - run: npm install
            - run: npm run build
            - uses: jakejarvis/s3-sync-action@master
              with:
                  args: --acl public-read --follow-symlinks --delete
              env:
                  AWS_S3_BUCKET: ${{ secrets.AWS_S3_BUCKET }}
                  AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
                  AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
                  AWS_REGION: "ap-southeast-2"
                  SOURCE_DIR: "dist"

2. 可选:消除Failed to load ./.env.警告

如果不需要在本地.env文件不存在时触发报错,可以调整dotenv-webpack配置,添加silent: true参数屏蔽文件不存在的警告:

plugins: [
    new Dotenv({
        systemvars: true,
        silent: true // 屏蔽.env文件不存在的警告
    }),
]

备选方案:构建前临时生成.env文件

如果你不想调整环境变量作用域,也可以在构建步骤前新增一行命令,直接把APP_BASE写入临时.env文件:

steps:
    - uses: actions/checkout@v1
    - run: npm install
    # 新增步骤:生成临时.env文件
    - run: echo "APP_BASE=${{ secrets.APP_BASE }}" > .env
    - run: npm run build
    # 后续S3同步步骤保持不变

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 04:15:03