繁体   English   中英

NextJS:元素类型无效:期望字符串(用于内置组件)或类/函数(用于复合组件)但得到:未定义

[英]NextJS: Element type is invalid: expected a string (for built-in components) or a class/function (for composite components) but got: undefined

使用 Nextjs,我在 /pages 目录中创建了一个 index.js,并在 /components/meta/ 目录中创建了 meta.js。

当我的应用程序重建时,我收到以下错误:

元素类型无效:应为字符串(用于内置组件)或类/函数(用于复合组件)但得到:未定义。

如下所示,我正在正确导入 Meta,它也是默认导出。 好奇我哪里错了。

页面/index.js

// import Head from 'next/head'
import Meta from '../components/meta/meta';

export default () => (
  <div>
    <Meta />
    <p>Hello world! Welcome to</p>
    <h1>Moonholdings.io</h1>
  </div>
)

组件/元/meta.js

import Head from 'next/head'

export default () => (
  <Head>
    <title>Moonholdings.io</title>
    <meta name="description" content="Your Cryptocurrency Portfolio" />>
    <meta name="keywords" content="cryptocurrency, crypto, portfolio, bitcoin, ethereum, holdings"/>
    <meta name="robots" content="index, follow" />
    <meta name="viewport" content="initial-scale=1.0, width=device-width" />
  </Head>
)

项目结构

在此处输入图像描述

我遇到了同样的错误,因为 IDE 的自动导入功能只能从next/document导入Head组件。

不:

import { Head } from 'next/document';

Head组件将用于自定义文档

做:

import Head from 'next/head'

这个Head组件将在您的页面中使用。

为什么我的 IDE 没有导入正确的 Head 组件?

这不是你的 IDE 的错。 好吧,不完全是…… next/head组件使用默认导出。 默认导出不能很好地与自动导入配合使用。 这就是为什么默认导出被认为是不好的做法的原因之一。 非常不幸的是,Vercel 选择允许他们参与他们的项目。

“next/link”导入带有花括号“{}”的“Link”并使用"<Link></Link>"时,我遇到了同样的错误,如下所示:

import { Link } from 'next/link';

const Hello = () => {
  return (
    <Link href='/hello'>
      Hello
    </Link>    
  )
}

export default Hello;

所以,我导入了没有大括号“{}”的“链接”,然后错误就解决了:

// "{}" are removed from "Link"
import Link from 'next/link';

const Hello = () => {
  return (
    <Link href='/hello'>
      Hello
    </Link>    
  )
}

export default Hello;

啊刚想通了,是一个小错字。

<meta name="description" content="Your Cryptocurrency Portfolio" />>

在我的 meta.js 文件中删除额外的>后,它起作用了。

我知道为时已晚 :) 但我写给读者的是:

这个错误与import部分有关。

import部分搜索并找出问题所在。 在我的情况下是一个 svg 文件。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 元素类型无效:应为字符串(对于内置组件)或类/函数(对于复合组件)但得到:未定义。 在 nextjs 中 NextJS:错误 - 元素类型无效:需要一个字符串(对于内置组件)或一个类/函数(对于复合组件)但得到:object 元素类型无效:预期字符串(用于内置组件)或类/函数(用于复合组件)但得到:未定义 错误:元素类型无效:需要一个字符串(对于内置组件)或一个类/函数(对于复合组件)但得到:未定义 渲染错误元素类型无效:预期为字符串(对于内置组件)或类/函数(对于复合组件)但得到:未定义 未捕获的错误:元素类型无效:预期为字符串(内置组件)或类/函数(复合组件),但得到:未定义 反应错误:元素类型无效:应为字符串(对于内置组件)或类/函数(对于复合组件)但得到:未定义 下一个 js:元素类型无效:需要一个字符串(对于内置组件)或一个类/函数(对于复合组件)但得到:未定义 元素类型无效:需要一个字符串(对于内置组件)或一个类/函数(对于复合组件)但得到:未定义的组件问题 元素类型无效:需要一个字符串(对于内置组件)或一个类/函数(对于复合组件)但得到:未定义的 React
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM