Este es el workaround documentado oficialmente para el bug conocido de navigator.locks colgándose en supabase-js v2
Some checks failed
/ Deploy to Cloudflare Pages (push) Has been cancelled
Some checks failed
/ Deploy to Cloudflare Pages (push) Has been cancelled
This commit is contained in:
@@ -1,4 +1,4 @@
|
||||
import { createClient } from '@supabase/supabase-js'
|
||||
import { createClient, processLock } from '@supabase/supabase-js'
|
||||
|
||||
const supabaseUrl = import.meta.env.VITE_SUPABASE_URL
|
||||
const supabaseAnonKey = import.meta.env.VITE_SUPABASE_ANON_KEY
|
||||
@@ -7,7 +7,16 @@ if (!supabaseUrl || !supabaseAnonKey) {
|
||||
throw new Error('Variables de entorno VITE_SUPABASE_URL y VITE_SUPABASE_ANON_KEY son requeridas')
|
||||
}
|
||||
|
||||
export const supabase = createClient(supabaseUrl, supabaseAnonKey)
|
||||
export const supabase = createClient(supabaseUrl, supabaseAnonKey, {
|
||||
auth: {
|
||||
// Por defecto supabase-js v2 usa navigator.locks para coordinar refresh de sesión entre tabs.
|
||||
// Si una tab queda colgada o se cierra sin liberar el lock, getSession()/queries quedan
|
||||
// esperando ese lock para siempre. processLock usa coordinación solo en memoria (sin
|
||||
// navigator.locks) — evita el deadlock a costa de no sincronizar refresh entre tabs,
|
||||
// lo cual es aceptable para este producto (uso mayormente single-tab).
|
||||
lock: processLock,
|
||||
},
|
||||
})
|
||||
|
||||
// supabase.auth.getSession() puede colgarse indefinidamente si el cliente queda
|
||||
// esperando un lock interno (navigator.locks) que nunca se libera. Esta barrera
|
||||
|
||||
Reference in New Issue
Block a user