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
相关产品推荐
相关产品推荐

