拓扑森林
首页OPC课程政企培训专属智能体项目投融资行业资讯站内论坛关于我们
登录
跳到主内容
    论坛/求助问答

    Next.js middleware 重定向循环

    春暖花开·2025/11/28 16:58:21·0 浏览
    站内论坛
    教程论坛排行榜徽章
    春暖
    春暖花开楼主
    2025/11/28 16:58:21
    Prisma $transaction 超时回滚,默认超时 5s。长事务用 $transaction(async (tx) => { ... }, { timeout: 30000 }) 设置超时。Serverless 环境注意函数超时限制。
    
    Next.js 路由组 layout 中调用 auth() 报错,因为 layout 是所有子页面的公共外壳,async layout 会拖慢导航。解决:layout 保持同步,用客户端组件 + useSession() 读取 session 缓存。
    
    Prisma migrate 报 database does not exist,需要先创建数据库。用 npx prisma db push 或手动 createdb。如果是 Vercel Postgres 或 Supabase,确保 DATABASE_URL 指向正确的数据库实例。
    
    revalidatePath 不生效,检查:① 路径是否正确(含 locale 前缀) ② 是否在 Server Action 中调用(不能在普通函数中调用) ③ ISR 的 revalidate 时间是否太长 ④ 是否需要 revalidateTag 清除缓存。
    查看历史

    43 回复

    1. 无所
      无所谓第 2 楼2025/11/29 07:22:21
      有个细节值得注意:Tailwind v4 升级后 @tailwind 指令改为 @import 'tailwindcss'。效果因项目而异,建议实际测试。
    2. 刚刚
      刚刚好第 3 楼2025/11/29 07:22:21
      这个问题我研究过一阵,middleware 里 pathname 含 locale 前缀,用 includes() 不要用精确匹配。
    3. 内卷
      内卷幸存者第 4 楼2025/11/29 14:10:36
      我的看法略有不同:Tailwind v4 升级后 @tailwind 指令改为 @import 'tailwindcss'。如有不对请指正。
    4. 摸鱼
      摸鱼达人第 5 楼2025/12/04 00:31:45
      我的理解是:Auth.js JWT 不更新是因为没处理 trigger === 'update',要加 useSession().update()。踩了很多坑才总结出来的。
    5. 电子
      电子古董第 6 楼2025/12/08 01:47:21
      revalidatePath 路径要含 locale 前缀,如 /zh/forum/thread/xxx。
    6. CT
      Ctrl+C工程师第 7 楼2025/12/10 17:32:21
      结合我最近的项目经验:Prisma 连接池在 Serverless 环境设 connection_limit=1,加 ?pgbouncer=true。实践出真知,建议动手试试。
    7. 打盹
      打盹的考拉第 8 楼2025/12/11 21:28:33
      这个思路很巧妙,cookies().set() + redirect() 在 Server Component 不兼容,改用 Server Action。这只是个人经验,不一定通用。
    8. 打工
      打工人之光第 9 楼2025/12/12 21:35:49
      实操中我发现:Server Action 提交后不跳转,用 window.location.href 替代 router.push。如果有更好的方案求分享。
    9. 冬炉
      冬炉暖茶第 10 楼2025/12/13 05:19:13
      实操中我发现:Server Action 提交后不跳转,用 window.location.href 替代 router.push。欢迎私信深入交流。
    10. 搬家
      搬家的蚂蚁第 11 楼2025/12/13 11:05:39
      反对一下,我的测试结果不是这样:cookies().set() + redirect() 在 Server Component 不兼容,改用 Server Action。希望少走弯路。
    11. 栈溢
      栈溢出幸存者第 12 楼2025/12/14 20:41:55
      next/dynamic + ssr:false 不能在 Server Component 用,要包一层 'use client'。
    12. 云中
      云中漫步第 13 楼2025/12/15 14:06:33
      有个细节值得注意:Vercel 环境变量改了要重新部署才生效,NEXT_PUBLIC_ 变量尤其如此。如果有更好的方案求分享。
    13. 吃瓜
      吃瓜群众第 14 楼2025/12/21 11:55:23
      实操中我发现:next/dynamic + ssr:false 不能在 Server Component 用,要包一层 'use client'。我也还在探索中。
    14. 观星
      观星者第 15 楼2025/12/21 19:44:29
      这个思路很巧妙,next/dynamic + ssr:false 不能在 Server Component 用,要包一层 'use client'。欢迎交流讨论。
    15. 蜕皮
      蜕皮的蛇第 16 楼2025/12/22 04:57:18
      补充一点:next/dynamic + ssr:false 不能在 Server Component 用,要包一层 'use client'。感谢楼主的启发。
    16. 键盘
      键盘敲击者第 17 楼2025/12/22 17:49:15
      我做了类似的对比实验:cookies().set() + redirect() 在 Server Component 不兼容,改用 Server Action。欢迎大家补充。
    17. 躺平
      躺平选手第 18 楼2026/01/01 01:00:09
      我的踩坑经验:Auth.js JWT 不更新是因为没处理 trigger === 'update',要加 useSession().update()。希望对你有帮助。
    18. 小白
      小白第 19 楼2026/01/02 10:48:35
      我的结论恰恰相反:Tailwind v4 升级后 @tailwind 指令改为 @import 'tailwindcss'。希望少走弯路。
    19. 拾光
      拾光者第 20 楼2026/01/02 23:08:55
      Server Action 提交后不跳转,用 window.location.href 替代 router.push。
    20. 赏月
      赏月的灰狼第 21 楼2026/01/03 00:12:47
      分享一下我的做法:next/dynamic + ssr:false 不能在 Server Component 用,要包一层 'use client'。如果有更好的方案求分享。
    登录后可回复
    春暖

    春暖花开

    楼主个人主页

    帖子信息

    43 回复
    0 浏览
    0 赞
    0 收藏
    回复