Lovableで生成されたSupabase接続アプリでは、接続情報が、
src/integrations/supabase/client.ts
に直接書かれていました。
これは良くないだろうということで、Cursorの支援で生成してもらった修正ソースは下記のような形。
client.ts
// This file is automatically generated. Do not edit it directly.
import { createClient } from '@supabase/supabase-js';
import type { Database } from './types';
if (!import.meta.env.VITE_PUBLIC_SUPABASE_URL) {
throw new Error('Missing env.NEXT_PUBLIC_SUPABASE_URL');
}
if (!import.meta.env.VITE_PUBLIC_SUPABASE_ANON_KEY) {
throw new Error('Missing env.NEXT_PUBLIC_SUPABASE_ANON_KEY');
}
// Import the supabase client like this:
// import { supabase } from "@/integrations/supabase/client";
export const supabase = createClient<Database>(
import.meta.env.VITE_PUBLIC_SUPABASE_URL,
import.meta.env.VITE_PUBLIC_SUPABASE_ANON_KEY
);
ところが
https://feedback.lovable.dev/ja/p/put-the-supabase-credentials-in-a-env-or-config-file
こちらでもやり取りされているように、Lovableは.envに対応されていないということで、環境変数の設定もできません。
上記でもコメントしている人がいますが、皆さん気にされていないのが不思議・・・
仕方ないので、client.tsに書いておきますが、将来に期待して、.envから読み込める場合はそれを読んで、読み込めない場合は固定値を使おうと思いました。
そこで、それぞれの変数を定義したところ、
client.ts
//Lovable はまだ.envに対応していないのでやむを得ず
let sburl;
let sbakey;
こんな提案をしてくれるCursor。
client.ts
if (import.meta.env.VITE_PUBLIC_SUPABASE_URL) {
sburl = import.meta.env.VITE_PUBLIC_SUPABASE_URL;
}else{
sburl = "https://giji-search-spark.supabase.co";
}
if (import.meta.env.VITE_PUBLIC_SUPABASE_ANON_KEY) {
sbakey = import.meta.env.VITE_PUBLIC_SUPABASE_ANON_KEY;
}else{
sbakey = "xxx";
}
変数名だけでなんで分かった??
可愛すぎる・・・
Cursorが本題のようになりましたが、Lovableにはぜひ対応していただきたい。