// import { createBrowserClient } from "@supabase/ssr" // import { getRuntimeEnv } from "@/lib/ipconfig" // import { Database } from "@/supabase/types" // export const supabase = createBrowserClient( // getRuntimeEnv("SUPABASE_URL") ?? "http://localhost:8000", // process.env.NEXT_PUBLIC_SUPABASE_ANON_KEY! // ✅ 编译时写死,照你意图 // ) // import { createBrowserClient } from "@supabase/ssr" // import { Database } from "@/supabase/types" // let _supabase: ReturnType> | null = null // export async function createClient() { // if (_supabase) return _supabase // const url = await getRuntimeSupabaseUrl() // const key = process.env.NEXT_PUBLIC_SUPABASE_ANON_KEY! // 你要求写死,保留 // _supabase = createBrowserClient(url, key) // return _supabase // } // // Export the supabase client directly for easier usage // export const supabase = async () => { // // Simply return the client created by createClient // return await createClient() // } // async function getRuntimeSupabaseUrl(retry = 30, interval = 50): Promise { // for (let i = 0; i < retry; i++) { // const url = window?.RUNTIME_ENV?.SUPABASE_URL // if (url) return url // await new Promise((r) => setTimeout(r, interval)) // } // throw new Error("RUNTIME_ENV.SUPABASE_URL not ready") // } import { createBrowserClient } from "@supabase/ssr"; import { Database } from "@/supabase/types"; // 缓存 Supabase 客户端实例 let _supabase: SupabaseClient | null = null; // 创建 Supabase 客户端的工厂方法 export function createClient() { // 如果客户端已经初始化,则直接返回 if (_supabase) return _supabase; // 获取动态的 SUPABASE_URL(同步获取) const url = window?.RUNTIME_ENV?.SUPABASE_URL ?? "http://localhost:8000"; // 默认回退值 const key = process.env.NEXT_PUBLIC_SUPABASE_ANON_KEY!; // 使用环境变量中的匿名密钥 // 初始化 Supabase 客户端并缓存 _supabase = createBrowserClient(url, key); return _supabase; } // 返回已初始化的同步 Supabase 客户端实例 export const supabase = createClient;