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

无法将GitHub Actions环境变量传递至Node.js脚本

解决GitHub Actions环境变量传递到Node.js脚本的问题

你遇到的undefined问题,核心原因要么是脚本没正确读取命令行参数,要么是误用了GitHub Actions的环境变量(比如你用的GITHUB_ACTION是当前动作的名称,不是构建编号,应该用GITHUB_RUN_NUMBER才对)。下面给你两种不需要中间文件的简洁解决方案:

方案一:正确解析命令行参数

先把GitHub Actions里的调用参数换成正确的构建编号变量,再在Node.js脚本里解析参数格式:

1. 调整GitHub Actions的run片段

run: |
  npm install
  # 用GITHUB_RUN_NUMBER(仓库工作流的递增构建号)作为构建编号
  node setbuildnumber.js build=${{ env.GITHUB_RUN_NUMBER }}
  npm run build-demo

2. 修改Node.js脚本(setbuildnumber.js)

const fs = require('fs');
const path = require('path');

// 解析命令行参数:跳过node和脚本路径,取后面的参数
const args = process.argv.slice(2);
const buildArg = args.find(arg => arg.startsWith('build='));

if (buildArg) {
  // 提取构建编号值
  const buildNumber = buildArg.split('=')[1];
  // 替换为你的环境配置文件路径(比如生产环境的prod配置)
  const envFilePath = path.join(__dirname, 'src/environments/environment.prod.ts');
  
  // 读取并替换配置字段
  let envContent = fs.readFileSync(envFilePath, 'utf8');
  // 匹配buildNumber字段(兼容空字符串、undefined等写法)
  envContent = envContent.replace(/buildNumber: ['"]?[^'"]*['"]?/, `buildNumber: '${buildNumber}'`);
  
  fs.writeFileSync(envFilePath, envContent);
  console.log(`构建编号已设置为:${buildNumber}`);
} else {
  console.error('未传入有效的build参数');
}

方案二:直接通过环境变量传递(更简洁)

把构建编号设为Node.js可直接读取的环境变量,不需要解析命令行参数:

1. 调整GitHub Actions的run片段

run: |
  npm install
  # 把构建编号注入到Node.js的环境变量中
  BUILD_NUMBER=${{ env.GITHUB_RUN_NUMBER }} node setbuildnumber.js
  npm run build-demo

2. 修改Node.js脚本(setbuildnumber.js)

const fs = require('fs');
const path = require('path');

// 直接从Node.js环境变量中读取
const buildNumber = process.env.BUILD_NUMBER;

if (buildNumber) {
  const envFilePath = path.join(__dirname, 'src/environments/environment.prod.ts');
  let envContent = fs.readFileSync(envFilePath, 'utf8');
  envContent = envContent.replace(/buildNumber: ['"]?[^'"]*['"]?/, `buildNumber: '${buildNumber}'`);
  
  fs.writeFileSync(envFilePath, envContent);
  console.log(`构建编号已设置为:${buildNumber}`);
} else {
  console.error('BUILD_NUMBER环境变量未正确设置');
}

额外注意事项

  1. 确认环境变量正确性:GITHUB_RUN_NUMBER是仓库每次工作流运行的递增编号,是最适合作为构建号的变量;GITHUB_ACTION是当前执行的动作名称(比如actions/checkout@v4),不要用错。
  2. 配置文件路径匹配:脚本里的路径要和你的项目结构一致,比如开发环境用environment.ts,生产环境用environment.prod.ts,要对应你构建命令的目标环境。
  3. 验证变量值:可以在GitHub Actions的run步骤中加一行echo ${{ env.GITHUB_RUN_NUMBER }},确认变量有值;脚本里也可以加console.log(buildNumber),验证读取是否成功。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.06 06:43:21