私はcreate-react-app
で働いていて、私がHome does not contain an export named 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
コンポーネントをエクスポートしていますが、コンソールにエラーと表示されます。
何が起こっている?
エラーは、インポートが正しくないことを知らせています。あなたが今持っているコード:
import { Home } from './layouts/Home';
名前付きエクスポートとしてではなく、デフォルトのエクスポートとしてエクスポートしているため、正しくありません。この行をチェックしてください。
export default Home;
を名前ではなくデフォルトのとしてエクスポートしています。したがって、Home
を次のようにインポートします。
import Home from './layouts/Home';
つかいます
import Home from './layouts/Home'
のではなく
import { Home } from './layouts/Home'
Homeから{}
を削除します。
これは、デフォルトエクスポートと名前付きエクスポートを混同した場合です。
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
見ていくつかの参照:
この問題を解決するには、次の2つの方法を使用できます。最初の方法として、コードのインポートセグメントを以下の方法で置き換えるのが最良の方法だと思います。
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};
私はちょうどこのエラーメッセージに出くわしました(nextjs 9にアップグレードした後、いくつかのトランスポートされたインポートがこのエラーを与え始めました)。私は次のような構文を使用してそれらを修正することができました:
import * as Home from './layouts/Home';