首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >next/head中的Head组件呈现为<body>而不是<head>

next/head中的Head组件呈现为<body>而不是<head>
EN

Stack Overflow用户
提问于 2020-12-23 05:20:22
回答 2查看 846关注 0票数 0

我正在用nextjs设置一个项目。我想添加一些全球元标签和标题的项目。我在_app.tsx中使用了来自next/headHead组件,但无论是在本地主机上还是在使用vercel部署时,它们都会呈现在body中,而不是head中。我以前用过next,不记得遇到过这个问题。

这是我的_app.tsx

代码语言:javascript
复制
import { AppProps } from 'next/app' 
import Head from 'next/head' 
import Footer from '../components/footer'
import MobileNavBar from '../components/mobileNavBar'
import NavBar from '../components/navBar'
import '../styles.scss'

const App = ({ Component, pageProps }: AppProps) => {
  return (
    <>
    <Head>
      <html lang="en" />
      <title> Erika's Dog Training </title>
      <meta 
        content="width=device-width, initial-scale=1, maximum-scale=5, shrink-to-fit=no"
        name="viewport"
      ></meta>
      <script type="text/javascript" src="https://assets.calendly.com/assets/external/widget.js"></script> 
    </Head>
    <MobileNavBar />
    <NavBar />
    <Component {...pageProps} />
    <Footer />
    </>
  )
}

export default App;

因此,这里的元标记和标题显示在页面上,但显示在<body>标记的顶部,而不是<head>

EN

回答 2

Stack Overflow用户

发布于 2020-12-23 05:49:19

考虑下nextjs文档中的this示例的结构。

代码语言:javascript
复制
import Document, { Html, Head, Main, NextScript } from 'next/document'

class MyDocument extends Document {
  static async getInitialProps(ctx) {
    const initialProps = await Document.getInitialProps(ctx)
    return { ...initialProps }
  }

  render() {
    return (
      <Html>
        <Head />
        <body>
          <Main />
          <NextScript />
        </body>
      </Html>
    )
  }
}

export default MyDocument

我看到的主要区别是,在文档中,他们将headbody都作为兄弟放在<Html>标记中。我怀疑这就是你的问题。我还会删除空的<></>标记。

在Head标记中有一行:<html lang="en" />。这使得next很难生成正确的html,因为html标签通常都在Headbody标签之上。

票数 2
EN

Stack Overflow用户

发布于 2021-10-28 22:07:55

我在next上遇到了同样的问题:"11.1.2“。删除<html lang="en" />解决了此问题。我使用以下命令添加了lang值:(https://melvingeorge.me/blog/set-html-lang-attribute-in-nextjs)

代码语言:javascript
复制
/* next.config.js  */
module.exports = {
  i18n: {
    locales: ["en"],
    defaultLocale: "en",
  },
};
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65415933

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档