javascript 主页不包含名为主页的导出

prdp8dxp  于 2022-12-21  发布在  Java
关注(0)|答案(9)|浏览(117)

我在使用create-react-app时遇到了这个问题,我得到了一个错误:
Home不包含名为Home的导出。
下面是我设置App.js文件的方法:

import React, { Component } from 'react';
import logo from './logo.svg';
import './App.css';
import { Home } from './layouts/Home'

class App extends Component {
  render() {
    return (
      <div className="App">
        Hello
        <Home />
      </div>
    )
  }
}

export default App;

现在,在我的layouts文件夹中,我有Home.js文件,它的设置如下:

import React, { Component } from 'react';

class Home extends Component {
  render() {
    return (
      <p className="App-intro">
        Hello Man
      </p>
    )
  }
}

export default Home;

正如您所看到的,我正在导出Home组件,但是在控制台中出现了一个错误,内容如下:

这是怎么回事?

rqqzpn5f

rqqzpn5f1#

我刚刚遇到了这个错误消息(升级到nextjs 9后,一些已泄漏的导入开始出现这个错误)。我设法使用如下语法修复它们:

import * as Home from './layouts/Home';
6l7fqoea

6l7fqoea2#

我们也可以用

import { Home } from './layouts/Home';

在class关键字之前使用export关键字。

export class Home extends React.Component{
    render(){
        ........
    }
}

默认

import Home from './layouts/Home';

默认导出类

export default class Home extends React.Component{
    render(){
        ........
    }
 }

这两种情况都不需要写

export default Home;

下课后。

hlswsv35

hlswsv353#

export { Home };放在Home.js文件的末尾

vom3gejh

vom3gejh4#

听起来很疯狂,我花了将近一个小时来解决一个类似的问题,重新启动了本地主机,它自己恢复了。荒谬的是,重新启动可以修复一切。对我来说,问题是注销。
我导入了:第一个月
使用此定义函数,注销组件export default Logout

ht4b089n

ht4b089n5#

你可以使用两种方法来解决这个问题,第一种方法,我认为这是最好的方法是取代导入段您的代码与以下之一:

import Home from './layouts/Home'

或者导出没有默认值的组件,这称为命名导出,如下所示

import React, { Component } from 'react';

class Home extends Component{
    render(){
        return(
        <p className="App-intro">
          Hello Man
        </p>
        )
    }
} 

export {Home};
jfewjypa

jfewjypa6#

这是解决方案:

  • 转到您的文件Home.js
  • 请确保在文件末尾导出文件,如下所示:
export default Home;
r6hnlfcb

r6hnlfcb7#

这个错误告诉你你导入的不正确。下面是你必须添加的代码:

import { Home } from './layouts/Home';

这是不正确的,因为您正在导出为默认导出,而不是命名导出。请检查此行:

export default Home;

您将 * 导出为默认值 *,而不是名称。因此,导入Home如下所示:

import Home from './layouts/Home';

注意没有花括号。进一步阅读importexport

ghhkc1vu

ghhkc1vu8#

用途

import Home from './layouts/Home'

而不是

import { Home } from './layouts/Home'

从主页中删除{}

06odsfpq

06odsfpq9#

在这种情况下,您混淆了default导出和named导出。
在处理named导出时,如果您尝试导入它们,则应使用花括号,如下所示:

import { Home } from './layouts/Home'; // if the Home is a named export

在你的例子中,Home被导出为默认值。当你没有指定某段代码的某个名称时,这是一个将从模块中导入的值。当你导入时,省略花括号,它将在你要导入的模块中查找默认导出值。所以你的导入应该是,

import Home from './layouts/Home'; // if the Home is a default export

一些参考资料:

相关问题