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

Supabase Realtime订阅配置失效,新增事件无法输出至控制台求助

排查Supabase Realtime订阅失效的步骤

你遇到的问题很常见,昨天正常今天失效,大概率是配置或权限出现了变动,以下是几个直接的排查方向:

  • 检查Realtime后台配置细节
    登录Supabase后台,进入Realtime模块:

    • 确认events表的发布开关是开启状态,且监听的操作是*(所有操作),有没有被误改成只监听特定操作(比如UPDATE);
    • 如果你的表启用了行级安全(RLS),检查当前登录用户是否拥有events表的SELECT权限——Realtime订阅会严格遵循RLS规则,若权限被修改或用户身份变化,会导致订阅收不到数据。
  • 添加订阅错误日志排查
    在你的订阅代码里加上错误回调,直接定位问题:

    useEffect(() => {
      // getUser(); 可以先注释掉,排除干扰
      const subscription = supabase
        .from('events')
        .on('*', (payload) => {
          console.log(payload);
        })
        .subscribe(
          (status) => console.log('订阅状态:', status),
          (error) => console.error('订阅失败:', error)
        );
      return () => {
        supabase.removeSubscription(subscription);
      };
    }, []);
    

    运行后看控制台的状态和错误信息,比如出现RLS_POLICY_VIOLATION就是权限问题,TABLE_NOT_FOUND就是表名错误或未发布。

  • 验证客户端版本与网络状态

    • 检查package.json中@supabase/supabase-js的版本,是否和昨天一致——部分版本更新可能会导致Realtime API的细微变化,可临时回退到之前的版本测试;
    • 查看浏览器控制台的Network面板,筛选WebSocket类型,确认连接是否成功建立,有没有频繁断开或报错的情况;同时检查Supabase后台是否有服务状态提示。
  • 排除其他代码干扰
    暂时注释掉getUser()这类无关代码,只保留订阅逻辑,测试是否能正常接收payload。如果此时恢复正常,说明getUser()中的操作(比如用户身份切换、权限变更)影响了订阅的有效性。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 04:05:12