Bug求助+悬赏

哎,老革命遇到新问题,创业+远程工作之后,想拉几个人跟我一起排查 bug 也找不到,只好公开求助+悬赏。

首先请大家看下面这段视频:

故障描述

简单来说,我们做了一个网站:Dailylift.io。在这个网站上,你能描述自己今天的状态,然后得到一些心灵慰藉:你信仰的目标会给你写一封信。

这个功能并不复杂,我选择用 Nuxt3 + Supabase 作为技术栈。我的理由是:

  1. 因为我们需要 SEO,我希望利用 Nuxt3 SSR 功能提升 SEO 效果。
  2. Supabase 提供包括开箱即用的用户系统在内的一系列 Serverless 功能,可以帮助我们的开发提速。
  3. Supabase 提供 Nuxt3 SDK,比 Auth0 更方便。
  4. Supabase 提供 VectorPG,方便我们使用 Embedding

但是实际运行起来之后,却发现一些我未曾预料到的问题,主要跟用户登录状态有关。具体复现步骤为:

  1. 用户未登录时,先填写感受和目标,然后点“收信”,我们会要求他登录
  2. 用户登录后,我们需要先检查他的收信记录,确保每天只有收一封信
  3. 接下来,如果他今天还没有收信,我们就继续之前的过程,给他写信
  4. 但是偶尔,前面都正常,登录之后就卡住了,无法进入发信流程

我尝试了很多方案,想解决这个问题,每次我都觉得自己搞定了,我甚至还写了一篇博客作为分享:使用 Vercel、Supabase、Stripe 打造 OpenAI 计费系统:2. 处理用户注册/登录。但是之后老板就会再次遇到这个问题,然后把我一通数落。我怎么也找不到稳定重现的方式,只能反复查验代码,希望找到其中的漏洞。

我有几个怀疑:

  1. Nuxt + Supabase,理论上存在两个环境有用户态:SSR与浏览器。我不确定这里会不会有问题。比如,为了防止 refresh token 的时候触发 onAuthStateChange,我用 useSupabaseUser 获取初始用户状态。会不会是它导致后面判断出错了(很小概率)?
  2. 我需要先检查用户的邮件历史,再决定是否请求信件。这里可能也会有问题,比如两次请求之间的先后顺序。
  3. Supabase SSO 只支持 redirect,必须跳走再回来,所以浏览器里的状态无法保存。从第三方回来,处理 access_token 期间,可能因为网络状态、本地内存状态等,进入到某个我没处理的分支,导致失败。
  4. 登录之后,onAuthStateChange 到用户登录彻底完成之前,中间其实有一小段时间,会不会是网络问题导致它被卡住了?

总之吧,我现在一个人开发,面对这些问题有些焦头烂额,所以希望所有看到这篇博客的同学,能帮我测试一下网站:Dailylift.io,帮我想想其中可能存在的坑,如果您有处理类似问题的经验,也请多分享一些。无论您:

  1. 帮我找到稳定重现的方式
  2. 帮我固定住 bug 出现的现场
  3. 帮我找到代码中潜藏的问题
  4. 引导我找到正确的方向
  5. 分享有价值的经验

我一定大红包伺候!感谢大家,期待帮忙。


更新:

2023-08-31

今天我早上测试的时候,遇到一个很诡异的问题:我通过 Google 登录后,遇到一个加载信件列表 400 错误,导致获取新信件失败。

看路径和参数,这个请求应该是正常的。最诡异的是,我在 Devtools 里看不到这个错误,只能看到两个 GET /letters 的请求,都是正常 200。

我现在怀疑这个问题是不是这样的:

  1. SSR 阶段它也会发起一个请求
  2. 这个请求在某个情况下会失败
  3. 这个失败会导致渲染出的页面携带着失败的状态,继而无法继续。

另外,因为我们使用 TiDB Serverless,会不会是冷启动时会产生长延迟,导致 Vercel Serverless 失败?不过我看了数据库,也有很多是几个小时后成功的,也不太像。

如果您觉得文章内容对您有用,不妨支持我创作更多有价值的分享:


已发布

分类

来自

标签:

评论

《“Bug求助+悬赏”》 有 1 条评论

  1. feng89 的头像
    feng89

    所以更加确定不用Supabase这类的黑盒,开发是很快,但遇到问题就抓瞎了

欢迎吐槽,共同进步

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据