底辺SE奮闘記

年収300万SEブログ

【Supabase】ローカル環境のEdge FunctionsからDatabaseに接続できなかった件

マニュアルを読んでいる方達ならこんなので詰まることはないのですが...

現象

ローカル環境のSupabase Edge Functionsから同じくローカル環境のSupabase Databaseに接続しようとすると下記エラーが出る。

{"message": "TypeError: error sending request for url (http://127.0.0.1:54321/rest/v1/xxxxx?select=*): error trying to connect: tcp connect error: Connection refused (os error 111)"},

環境

・Supabase 1.153.4

結論 1

Supabaseが用意してくれている環境変数(Deno.env.get("SUPABASE_URL")及びDeno.env.get("SUPABASE_ANON_KEY"))をちゃんと使いましょう。

以下、最低限の接続コード。

import { createClient } from 'https://esm.sh/@supabase/supabase-js@2'

Deno.serve(async (req) => {

    const supabase = createClient(
        Deno.env.get("SUPABASE_URL"),
        Deno.env.get("SUPABASE_ANON_KEY"),
    )

    const { data, error } = await supabase
    .from('hoge_table')
    .select("*")

    return new Response(
        JSON.stringify(data),
        { headers: { "Content-Type": "application/json" } },
    )
})

結論 2

何かしらで環境変数が利用できない場合は、SUPABASE_URLを下記3種類を試して、繋がるやつを利用しましょう(開発者の環境によって正解が異なる)。