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

使用GitHub Actions运行Vite+React单元测试时遇supabaseUrl必填错误

解决GitHub Actions中Supabase环境变量无法加载的问题

问题分析

本地运行npm run test正常,但GitHub Actions中测试报错supabaseUrl is required,核心原因是:

  • 本地通过dotenv从.env文件加载变量,而CI环境中没有该文件(不提交.env到仓库是正确的安全操作)。
  • 虽然在Actions工作流中配置了环境变量,但可能因dotenv的加载逻辑或变量传递问题,导致Supabase客户端初始化失败。

解决方案

方案1:优化Supabase客户端初始化逻辑

修改supabase.js,让dotenv仅在非CI环境加载(CI环境由Actions直接注入变量),同时增加变量校验,避免隐式错误:

// 仅在非CI环境加载dotenv,避免在Actions中尝试读取不存在的.env文件
if (!process.env.CI) {
  // 根据项目结构调整.env路径,比如.env在api目录下用"./.env",在根目录用"../.env"
  require("dotenv").config({ path: "../.env" });
}

const { createClient } = require("@supabase/supabase-js");

// 显式获取并校验环境变量
const supabaseUrl = process.env.SUPABASE_URL;
const supabaseKey = process.env.SUPABASE_KEY;

if (!supabaseUrl || !supabaseKey) {
  throw new Error("必须设置SUPABASE_URL和SUPABASE_KEY环境变量");
}

const supabase = createClient(supabaseUrl, supabaseKey);

module.exports = { supabase };

方案2:在Actions中临时生成.env文件

如果不想修改代码,可以在工作流中添加步骤,将GitHub Secrets写入临时.env文件,让dotenv能正常读取:
修改.github/workflows/tests.yml,在Install dependencies之后、Run tests之前添加:

- name: 生成临时.env文件
  working-directory: ./api
  run: |
    echo "SUPABASE_URL=${{ secrets.SUPABASE_URL }}" >> .env
    echo "SUPABASE_KEY=${{ secrets.SUPABASE_KEY }}" >> .env

方案3:排查环境变量是否正确注入

先确认Actions中的环境变量是否真的存在,添加打印步骤验证:

- name: 检查环境变量
  working-directory: ./api
  run: |
    echo "SUPABASE_URL: $SUPABASE_URL"
    echo "SUPABASE_KEY: $SUPABASE_KEY"

运行后查看Actions日志,如果变量为空,说明GitHub Secrets未正确设置,需要检查仓库的Settings > Secrets and variables > Actions中是否添加了正确的密钥。

注意事项

  • GitHub Secrets是大小写敏感的,确保工作流中引用的名称和Secrets设置的完全一致。
  • 永远不要将.env文件提交到仓库,避免密钥泄露。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.12 10:43:14