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

使用NextJs与Next UI时遇SSRProvider控制台警告,求助解决

解决Next.js + Next UI中SSRProvider警告的方案

1. 确认SSRProvider的正确引入(按Next UI版本区分)

  • Next UI v2:SSRProvider内置在@nextui-org/react包中,直接在根布局文件(app/layout.tsx)全局包裹应用:
import { SSRProvider } from '@nextui-org/react';

export default function RootLayout({ children }: { children: React.ReactNode }) {
  return (
    <html lang="zh-CN">
      <body>
        <SSRProvider>{children}</SSRProvider>
      </body>
    </html>
  );
}
  • Next UI v1:需要单独安装@nextui-org/ssr依赖,再在根组件中包裹:
    首先安装依赖:
npm install @nextui-org/ssr
# 或 yarn add @nextui-org/ssr

然后根据路由类型处理:

  • Pages Router(_app.tsx):
import { SSRProvider } from '@nextui-org/ssr';
import type { AppProps } from 'next/app';

function MyApp({ Component, pageProps }: AppProps) {
  return (
    <SSRProvider>
      <Component {...pageProps} />
    </SSRProvider>
  );
}

export default MyApp;
  • App Router(app/layout.tsx):
import { SSRProvider } from '@nextui-org/ssr';

export default function RootLayout({ children }: { children: React.ReactNode }) {
  return (
    <html lang="zh-CN">
      <body>
        <SSRProvider>{children}</SSRProvider>
      </body>
    </html>
  );
}

2. 排查包裹范围问题

  • 确保所有Next UI组件都在SSRProvider的覆盖范围内,不要在Provider外部使用Next UI的客户端组件(比如在服务器组件中错误引入客户端组件,或布局结构中遗漏包裹)。
  • 若使用多层嵌套布局,确认最外层的SSRProvider已覆盖所有子路由和组件。

3. 清除缓存并重新构建

有时候缓存会导致旧代码残留,执行以下步骤:

# 删除Next.js缓存目录和node_modules缓存
rm -rf .next node_modules/.cache
# 重新安装依赖
npm install
# 重新构建并启动开发服务
npm run build && npm run dev

4. 排查第三方组件冲突

  • 若项目中使用了其他需要SSR适配的库,确保它们的Provider不会干扰Next UI的SSRProvider,尽量将SSRProvider放在最外层。
  • 暂时注释掉自定义组件或第三方组件,逐步排查是否是某个组件导致ID生成不一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 22:05:11