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

Next.js构建后页面<title>与<meta>标签源码不显示问题排查

问题原因与解决方案

核心问题

你当前代码的Head组件放置位置错误,是导致构建后静态页面无法查找到title、meta标签的直接原因:
你将next/head导出的Head组件嵌套在自定义Layout组件内部,Next.js的SSG(静态站点生成,你当前用的getStaticPaths+getStaticProps属于SSG模式)在构建阶段提取静态head内容时,无法正确解析嵌套在自定义组件内部的Head标签。本地dev环境是客户端实时渲染,所以不会触发这个问题。

修复方案

将Head组件移到Layout组件的外层,和Layout同级放在根节点的React碎片中即可,修改后的代码结构如下:

const Post = (props) => {
    const router = useRouter()
    const { Id } = router.query
    console.log(props.category_list)
    return (
        <>
            {/* Head移到Layout外层 */}
            <Head>
                <meta charSet="utf-8" />
                <title>Welcome to Payments, Deals</title>
                <meta name="description" content="This is sample content" />
                <meta name="keywords" content="" />
                <meta name="google-site-verification" content="rtIRrUNRpgZ_lFtlfS8LJ0-8j_d569BXS9NOGa_nM6Y" />
            </Head>
            <Layout>
                {/* 原有页面内容保持不变 */}
                <Grid className="store-list">
                    <Grid.Column width={16}>
                        <p>
                            <span>{props.category_title.heading_label}</span>
                        </p>
                    </Grid.Column>
                </Grid>
                {/* 其余原有代码省略 */}
            </Layout>
        </>
    )
}

额外注意事项

  • 如果你的Layout组件内部也定义了Head标签和重复的title、meta字段,会出现标签覆盖问题,建议统一管理head逻辑:要么所有页面的head都单独写在页面层,要么给Layout组件加props参数动态传入title、meta内容。
  • 修改后重新执行next build+next start,查看页面源码即可看到对应的title和meta标签。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 12:06:03