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

Node.js应用在GitHub Actions中环境变量加载及.env使用问题

问题描述

我正尝试通过GitHub Actions为Node.js应用设置环境变量,但运行工作流时返回“invalid token”错误,推测应用未正确读取该变量。同时想了解如何在GitHub Actions中使用.env文件设置变量。

现有工作流配置

name: Pay and Connect Voucher Request

on:
    schedule:
        - cron: '00 20 * * 1-5'
  
jobs:
  request:
    runs-on: ubuntu-latest
    
    steps:
    - name: Checkout Repository
      uses: actions/checkout@v2

    - name: Set up Node.js
      uses: actions/setup-node@v2
      with:
        node-version: "18.15"

    - name: Install Dependencies
      run: npm install
    - name: Setting the environment variables
      run: |
       echo "AUTHORIZATION_TOKEN=$AUTHORIZATION_TOKEN" >> $GITHUB_ENV
      env:
        AUTHORIZATION_TOKEN: ${{ secrets.AUTHORIZATION_TOKEN }}

    - name: Run Program
      run: npm start

应用代码(src/index.ts)

import axios from "axios";
import dotenv from "dotenv";
dotenv.configDotenv();

const requestURL: string =
    "https://uct.api.getslideapp.com/2/connect/vouchers/issue/";
const authorizationToken = process.env.AUTHORIZATION_TOKEN;

async function sendRequest() {
    try {
        const { data, status } = await axios.post(
            requestURL,
            {},
            {
                headers: {
                    "Content-Type": "application/json",
                    Origin: "https://app.payandconnect.co.za",
                    Referer: "https://app.payandconnect.co.za/u/vouchers",
                    Authorization: authorizationToken,
                },
            }
        );
    } catch (error) {
        if (axios.isAxiosError(error)) {
            console.log("message: ", error.response?.data);
        } else {
            console.log("unexpected error: ", error);
        }
    }
}

sendRequest();

错误信息

> pay-and-connect-plus-plus@1.0.0 start
> ts-node src/index.ts

TOKEN***
message:  { status: 'error', message: 'Token is invalid.' }
解决方案

一、排查环境变量读取问题

  1. 验证变量注入状态
    在Run Program步骤前添加打印命令,确认变量是否被正确注入(GitHub会自动屏蔽secret内容,显示***即表示注入成功):

    - name: Print environment variable
      run: echo "AUTHORIZATION_TOKEN=${{ env.AUTHORIZATION_TOKEN }}"
    
  2. 修正dotenv调用
    代码中dotenv.configDotenv()是错误写法,正确调用为dotenv.config()。虽然GitHub Actions通过$GITHUB_ENV设置的变量会直接加入process.env,无需dotenv读取,但错误调用可能引发意外问题,建议修正:

    import dotenv from "dotenv";
    dotenv.config(); // 替换原错误调用
    
  3. 检查Authorization头格式
    多数API要求Authorization头带前缀(如Bearer ),若你的token本身不包含前缀,需在代码中补充:

    Authorization: `Bearer ${authorizationToken}`,
    

    可先在本地测试正确的头格式,再同步到代码中。

二、在GitHub Actions中使用.env文件

若需通过.env文件管理变量,可在工作流中动态生成该文件:

  1. 添加生成.env的步骤
    在Install Dependencies之后、Run Program之前新增步骤:
    - name: Create .env file
      run: |
        echo "AUTHORIZATION_TOKEN=${{ secrets.AUTHORIZATION_TOKEN }}" >> .env
        # 如需添加其他变量,按此格式每行追加
    
  2. 确保应用读取.env
    保证代码中dotenv.config()调用正确,应用会自动读取项目根目录的.env文件。

三、其他排查点

  • 确认GitHub仓库的AUTHORIZATION_TOKEN secret已正确设置,值无多余空格或换行;
  • 本地使用相同token测试API调用,排除token本身无效的可能。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 21:30:17