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

未启用RLS仍无法从Supabase API获取publicUrl求助

Supabase Storage 获取公网URL返回undefined的解决方法

核心代码错误:解构方式错误

你调用getPublicUrl后直接解构publicURL的写法有误,Supabase JS SDK的getPublicUrl方法返回值包含在data对象内,正确的公网URL字段是data.publicUrl(注意是小写url),并非顶层的publicURL。

修正后的代码片段:

const { data: urlData } = supabase.storage
  .from("product_image")
  .getPublicUrl(data.path);

console.log(urlData.publicUrl); // 此处为正确的公网URL

额外排查方向

如果修正解构后问题仍存在,检查以下几点:

  • 桶的公共访问配置:确认product_image桶已设置为公共桶。在Supabase控制台的Storage页面找到对应桶,进入「Settings」,开启「Public bucket」选项。
  • 存储读取策略:即使关闭了RLS,也要确保桶存在允许读取的策略。在控制台Storage -> Policies中添加或确认存在如下策略:
    CREATE POLICY "允许公共读取" ON storage.objects
    FOR SELECT USING (bucket_id = 'product_image');
    
  • SDK版本兼容性:旧版Supabase JS SDK可能存在返回结构差异,建议升级至最新版本:
    npm update @supabase/supabase-js
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.16 14:17:05