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

Next.js 15中使用Convex时出现headers同步调用控制台错误

问题

在Next.js 15中,将根布局组件包裹在<ConvexAuthNextjsServerProvider>内时,控制台会抛出以下错误:
[Server] Error: Route "/" used headers().get('Host'). headers() should be awaited before using its value.

该问题在Next.js 14中未出现,虽不影响项目功能,但每次刷新或打开页面都会触发报错,目前Convex官方文档尚未更新适配方案。

对应的layout.tsx代码如下:

export default function RootLayout({
  children,
}: Readonly<{
  children: React.ReactNode;
}>) {
  return (
    <ConvexAuthNextjsServerProvider>
      <html lang="en">
        <body>
          <JotaiProvider>
            {children}
          </JotaiProvider>
        </body>
      </html>
    </ConvexAuthNextjsServerProvider>
  );
}
临时修复方案

方案1:将根布局改为异步组件,手动传入Host参数

如果ConvexAuthNextjsServerProvider支持手动传入host属性,可以将根布局改为异步组件,提前获取并传入Host值:

export default async function RootLayout({
  children,
}: Readonly<{
  children: React.ReactNode;
}>) {
  const host = await headers().get('Host');
  return (
    <ConvexAuthNextjsServerProvider host={host}>
      <html lang="en">
        <body>
          <JotaiProvider>
            {children}
          </JotaiProvider>
        </body>
      </html>
    </ConvexAuthNextjsServerProvider>
  );
}

方案2:动态导入Provider并禁用SSR

若Provider不支持手动传入Host,可通过Next.js的dynamic导入将其转为客户端组件,避免在服务端调用同步动态API:

import dynamic from 'next/dynamic';

// 动态导入并禁用服务端渲染
const ConvexAuthNextjsServerProvider = dynamic(
  () => import('@convex-dev/auth/nextjs/server').then(mod => mod.ConvexAuthNextjsServerProvider),
  { ssr: false }
);

export default function RootLayout({
  children,
}: Readonly<{
  children: React.ReactNode;
}>) {
  return (
    <ConvexAuthNextjsServerProvider>
      <html lang="en">
        <body>
          <JotaiProvider>
            {children}
          </JotaiProvider>
        </body>
      </html>
    </ConvexAuthNextjsServerProvider>
  );
}

注意:此方案会关闭该Provider的服务端渲染,需根据项目实际情况评估影响。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.16 16:40:02