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

Next.js生产构建页面加载后瞬间消失,开发环境正常

Next.js 构建后页面加载即消失的问题排查与解决

问题根源

你的RootLayout违反了Next.js App Router的核心要求:根布局必须包含<html>和<body>标签。当前代码直接返回<div>作为根元素,导致构建后React无法正确挂载到文档DOM节点,触发一系列DOM操作错误(如appendChild/removeChild失败)以及React的418、423压缩错误(本质是根组件结构不符合规范)。

修复方案

修改layout.tsx,将根结构包裹在<html>和<body>标签内,这是App Router强制要求的根布局结构:

import './globals.css'
import type { Metadata } from 'next'
import Navbar from '../components/Navbar'
import Image from 'next/image'

export const metadata: Metadata = {
  title: 'redacted',
  description: 'Personal Website',
}

export default function RootLayout({
  children,
}: {
  children: React.ReactNode
}) {
  return (
    <html lang="en">
      <body className="relative">
        <div className="-z-1 bg-night absolute inset-0">
          <div className="fixed w-screen h-screen pointer-events-none bg-scroll">
            <Image src="/bg-circle.png" alt="" fill objectFit="cover" />
          </div>
        </div>
        <div className='flex justify-center'>
          <div className="fixed z-10 w-2/5">
            <Navbar />
          </div>
        </div>
        
        <div className="relative z-0">{children}</div>
      </body>
    </html>
  )
}

额外注意点

  • 替换layout="fill"为fill属性:Next.js 13+的Image组件已废弃layout prop,直接使用fill布尔属性即可实现全屏填充效果。
  • 确保<html>标签添加lang属性:这是符合HTML规范的要求,也有助于SEO。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 14:47:19