Gatsby.jsで「ModuleBuildError: Module build failed : SyntaxError: Only one default export allowed per module.」というエラーが出たときの対処法
エラーメッセージ
ModuleBuildError: Module build failed (from ./node_modules/gatsby/dist/utils/babel-loader.js):
SyntaxError: /Users/user_name/git/maiamea/portfolio/src/pages/hello.jsx: Only one default export allowed per module. (31:
0)
29 |
30 | export default HelloPage
> 31 | export default Example
| ^
エラー発生時のコード
src/pages/hello.jsx
import React, { useState } from 'react';
const HelloPage = () => {
return (
<main>
<h1>Hello, World!!!</h1>
<p style={
{color:"red"}
}>こんにちは</p>
<h2>はじめてのGatsby</h2>
</main>
)
}
function Example() {
const [count, setCount] = useState(0);
return (
<div>
<p>You clicked {count} times</p>
<button onClick={() => setCount(count+1)}>
Click me
</button>
</div>
)
}
export default HelloPage
export default Example
原因
ModuleBuildError: Module build failed (from ./node_modules/gatsby/dist/utils/babel-loader.js):
SyntaxError: /Users/user_name/git/maiamea/portfolio/src/pages/hello.jsx: Only one default export allowed per module. (31:
0)
29 |
30 | export default HelloPage
> 31 | export default Example
| ^
src/pages/hello.jsx
import React, { useState } from 'react';
const HelloPage = () => {
return (
<main>
<h1>Hello, World!!!</h1>
<p style={
{color:"red"}
}>こんにちは</p>
<h2>はじめてのGatsby</h2>
</main>
)
}
function Example() {
const [count, setCount] = useState(0);
return (
<div>
<p>You clicked {count} times</p>
<button onClick={() => setCount(count+1)}>
Click me
</button>
</div>
)
}
export default HelloPage
export default Example
原因
1つのファイル内にexport defalt
を複数書いていた。
対処法
export default
には起点となるコンポーネントを書き、一緒のページに表示させたい他のコンポーネントは、起点となるコンポーネント内に<ExampleComponent></ExampleComponent>
のように埋め込む。
修正後
src/pages/hello.jsx
import React, { useState } from 'react';
const HelloPage = () => {
return (
<main>
<h1>Hello, World!!!</h1>
<p style={
{color:"red"}
}>こんにちは</p>
<h2>はじめてのGatsby</h2>
<ExampleComponent></ExampleComponent>
</main>
)
}
function ExampleComponent() {
const [count, setCount] = useState(0);
return (
<div>
<p>You clicked {count} times</p>
<button onClick={() => setCount(count+1)}>
Click me
</button>
</div>
)
}
export default HelloPage
実行結果(ブラウザ)
src/pages/hello.jsx
import React, { useState } from 'react';
const HelloPage = () => {
return (
<main>
<h1>Hello, World!!!</h1>
<p style={
{color:"red"}
}>こんにちは</p>
<h2>はじめてのGatsby</h2>
<ExampleComponent></ExampleComponent>
</main>
)
}
function ExampleComponent() {
const [count, setCount] = useState(0);
return (
<div>
<p>You clicked {count} times</p>
<button onClick={() => setCount(count+1)}>
Click me
</button>
</div>
)
}
export default HelloPage
参考サイト
Author And Source
この問題について(Gatsby.jsで「ModuleBuildError: Module build failed : SyntaxError: Only one default export allowed per module.」というエラーが出たときの対処法), 我々は、より多くの情報をここで見つけました https://qiita.com/maiamea/items/58bdd1d9bb7fba9bb0b5著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .