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

如何在Next.js 14 App Router中正确配置viewport meta标签?

在Next.js 14 App Router中正确设置响应式Viewport标签

你遇到的警告是因为App Router已弃用next/head,官方推荐使用Metadata API管理页面元数据(包括viewport标签)。下面是两种正确的实现方式:

方法一:通过Metadata对象配置(推荐)

直接在导出的metadata对象中添加viewport字段,统一管理所有元数据:

import type { Metadata } from 'next'
import { Inter } from 'next/font/google'

const inter = Inter({ subsets: ['latin'] })

export const metadata: Metadata = {
  title: 'STB Radius',
  description: 'The STB Radius Manager',
  // 添加viewport配置
  viewport: 'width=device-width, initial-scale=1'
}

export default function RootLayout({ children }: { children: React.ReactNode }) {
  return (
    <html lang="en">
      {/* 移除<Head>组件,无需再使用 */}
      <body className={inter.className}>{children}</body>
    </html>
  )
}

方法二:直接在html标签上设置(Next.js 13.4+支持)

若习惯直接操作标签属性,Next.js 13.4及以上版本允许直接给<html>标签添加viewport属性:

import type { Metadata } from 'next'
import { Inter } from 'next/font/google'

const inter = Inter({ subsets: ['latin'] })

export const metadata: Metadata = {
  title: 'STB Radius',
  description: 'The STB Radius Manager',
}

export default function RootLayout({ children }: { children: React.ReactNode }) {
  return (
    {/* 直接在html标签添加viewport属性 */}
    <html lang="en" viewport="width=device-width, initial-scale=1">
      <body className={inter.className}>{children}</body>
    </html>
  )
}

两种方式都能消除警告并正确配置响应式viewport,推荐使用第一种方法,更贴合App Router的设计规范。

内容的提问来源于stack exchange,提问作者Islam Y-

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.05 02:55:10