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.' }
解决方案
一、排查环境变量读取问题
验证变量注入状态
在Run Program步骤前添加打印命令,确认变量是否被正确注入(GitHub会自动屏蔽secret内容,显示***即表示注入成功):- name: Print environment variable run: echo "AUTHORIZATION_TOKEN=${{ env.AUTHORIZATION_TOKEN }}"修正dotenv调用
代码中dotenv.configDotenv()是错误写法,正确调用为dotenv.config()。虽然GitHub Actions通过$GITHUB_ENV设置的变量会直接加入process.env,无需dotenv读取,但错误调用可能引发意外问题,建议修正:import dotenv from "dotenv"; dotenv.config(); // 替换原错误调用检查Authorization头格式
多数API要求Authorization头带前缀(如Bearer),若你的token本身不包含前缀,需在代码中补充:Authorization: `Bearer ${authorizationToken}`,可先在本地测试正确的头格式,再同步到代码中。
二、在GitHub Actions中使用.env文件
若需通过.env文件管理变量,可在工作流中动态生成该文件:
- 添加生成.env的步骤
在Install Dependencies之后、Run Program之前新增步骤:- name: Create .env file run: | echo "AUTHORIZATION_TOKEN=${{ secrets.AUTHORIZATION_TOKEN }}" >> .env # 如需添加其他变量,按此格式每行追加 - 确保应用读取.env
保证代码中dotenv.config()调用正确,应用会自动读取项目根目录的.env文件。
三、其他排查点
- 确认GitHub仓库的
AUTHORIZATION_TOKENsecret已正确设置,值无多余空格或换行; - 本地使用相同token测试API调用,排除token本身无效的可能。
内容的提问来源于stack exchange,提问作者Deshy Dan
相关产品推荐
相关产品推荐

