环境变量未正确加载到 Node.js 应用中的“process.env”中

Environment variable not loading correctly into 'process.env' in a Node.js app

提问人:Deshy Dan 提问时间:10/25/2023 最后编辑:AzeemDeshy Dan 更新时间:10/25/2023 访问量:83

问:

我正在尝试使用GitHub Actions为我的Node.js应用程序设置环境变量。但是,当我运行工作流时,应用程序似乎没有正确读取变量,因为它返回了“无效令牌”错误。此外,我想知道如何使用文件在 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();

这是我收到的错误:

> [email protected] start
> ts-node src/index.ts

TOKEN***
message:  { status: 'error', message: 'Token is invalid.' }
节点 .js 打字稿 环境变量 github-actions .env

评论

2赞 slebetman 10/25/2023
看起来它不像没有正确读取变量。令牌的值似乎无效
0赞 Azeem 10/25/2023
在您的情况下,您可以直接使用上下文进行设置,而不是设置为 。您只需要将步骤移动到需要的位置,然后删除将其设置为 的步骤。AUTHORIZATION_TOKEN$GITHUB_ENVenvenv$GITHUB_ENV
0赞 Azeem 10/25/2023
该令牌在本地是否适合您?您是否验证过在设置密钥时没有多余的换行符或空格?
0赞 Deshy Dan 10/27/2023
感谢您的贡献。在对问题进行故障排除时,我注意到当我登录到获取 API 调用的网站时,令牌有效。但是,当我关闭网站并单独运行工作流时,令牌将失效。我怀疑这个问题可能与标头有关。令牌确实在我的计算机上本地工作。您认为这可能是什么原因造成的?

答:

1赞 ahmed 10/25/2023 #1

根据提供的信息,使用 GitHub Actions 为 Node.js 应用程序设置环境变量时,您似乎遇到了两个问题。第一个问题是应用程序未正确读取变量,导致“无效令牌”错误。第二个问题是,您想知道如何使用 .env 文件在 GitHub Actions 中设置此变量。

为了解决第一个问题,似乎在 GitHub Actions 工作流中未正确设置环境变量。这可能会导致应用程序尝试读取变量时出现“无效令牌”错误。是否已确认在 GitHub 存储库机密中正确设置了机密?AUTHORIZATION_TOKENAUTHORIZATION_TOKEN

现在,关于第二个问题,要使用 .env 文件在 GitHub Actions 中设置变量,您可以使用包从 .env 文件加载变量。但是,我注意到您的代码中有一个小错别字,您使用了 .请更新此行,以便从 .env 文件正确加载变量。dotenvdotenv.configDotenv()dotenv.config()dotenv.config()

您是否尝试过进行这些更改,看看它们是否解决了您面临的问题?如果您需要进一步的帮助,请告诉我。

评论

0赞 Deshy Dan 10/27/2023
感谢您的贡献。在对问题进行故障排除时,我注意到当我登录到获取 API 调用的网站时,令牌有效。但是,当我关闭网站并单独运行工作流时,令牌将失效。我怀疑这个问题可能与标头有关。你对如何从那里解决它有什么建议吗?