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

Next.js 13.4中如何解决viewport meta标签重复问题?

解决RootLayout中viewport标签重复的问题

问题根源

Next.js(App Router模式)会自动向页面<head>中注入默认的viewport meta标签,当你在RootLayout的<head>里手动添加时,就会导致标签重复。

解决方案

方案1:使用Next.js Metadata API配置(推荐)

无需手动编写<meta>标签,直接通过RootLayout的metadata属性配置viewport,Next.js会自动处理并避免重复。

修改后的RootLayout.js代码:

import { Metadata } from 'next';

export const metadata = {
  viewport: 'width=device-width, initial-scale=1, maximum-scale=1',
};

export default function RootLayout({ children }) {
  return (
    <html lang="en">
      <body>{children}</body>
    </html>
  );
}

这种方式会用你自定义的viewport值替换默认注入的标签,不会出现重复问题,也是Next.js官方推荐的配置方式。

方案2:禁用自动注入,保留手动标签

如果坚持手动添加<meta>标签,可以通过next.config.js禁用Next.js自动注入的viewport标签:

在项目根目录的next.config.js中添加如下配置:

/** @type {import('next').NextConfig} */
const nextConfig = {
  // 若使用App Router,appDir配置可能已开启
  experimental: {
    appDir: true,
  },
  head: {
    viewport: false, // 禁用自动注入的viewport标签
  },
};

module.exports = nextConfig;

配置完成后,RootLayout中手动添加的viewport标签就不会和自动注入的重复了。

注意:方案2需确保你的Next.js版本支持该配置项,相比之下方案1更符合框架最佳实践,优先推荐。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 19:17:00