查看: 128|回复: 0

Error: Attempted to call generateViewport() from the server (Next.js 15)

[复制链接]

3

主题

0

回帖

0

积分

热心网友

金币
0
阅读权限
220
精华
0
威望
0
贡献
0
在线时间
0 小时
注册时间
2011-7-10
发表于 2025-1-5 10:22:00 | 显示全部楼层 |阅读模式

Error occurred prerendering page "/". Read more: https://nextjs.org/docs/messages/prerender-error Error: Attempted to call generateViewport() from the server but generateViewport is on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.

这个错误是由于 文件的配置不正确。在 中,我们不需要手动创建 root 并渲染应用。以下是修复方法:

请按此调整你的代码,以符合 的正确配置。这样可以避免在页面预渲染时出现错误。
# 错误的代码

import React from 'react';
import ReactDOM from 'react-dom/client';
import App from './App';
import { BrowserRouter } from 'react-router-dom';

const rootElement = document.getElementById('root') as HTMLElement;  // Type assertion to HTMLElement

ReactDOM.createRoot(rootElement).render(
  <React.StrictMode>
    <BrowserRouter>
    <App />
    </BrowserRouter>
  </React.StrictMode>,
);

# 正确的代码

'use client'

import React from 'react'
import { BrowserRouter } from 'react-router-dom'

interface RootLayoutProps {
  children: React.ReactNode
}

export default function RootLayout({ children }: RootLayoutProps) {
  return (
    <html lang='en'>
      <body>
        <BrowserRouter>
          {children}
        </BrowserRouter>
      </body>
    </html>
  )
}

 

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

圆梦公社,专注于为全球华人提供纯粹技术交流的地方,请勿发布任何政治及违法的言论。如有相关侵权、举报、投诉及建议等,请发 E-mail:dzh188@hotmail.com

Powered by Discuz! X5.0 © 2001-2026 Discuz! Team.