9
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

【React】Element type is invalid: expected a stringの対処法

Last updated at Posted at 2021-05-28

症状

Reactでnpmstartしたとき、下記エラーが発生してしまいました。コンパイルエラー発生していませんでした。
エラーメッセージ
Error: Element type is invalid: expected a string (for built-in components) or a class/function (for composite components) but got: undefined. You likely forgot to export your component from the file it's defined in, or you might have mixed up default and named imports.

翻訳すると、「エラー:要素タイプが無効です:文字列(組み込みコンポーネントの場合)またはクラス/関数(複合コンポーネントの場合)が必要ですが、取得されました:未定義。コンポーネントが定義されているファイルからコンポーネントをエクスポートするのを忘れたか、デフォルトのインポートと名前付きのインポートを混同している可能性があります。」

要素タイプが無効だそうですが、若干意味がつかみにくく調べてみると、こちらが出てきました。

サイトを参考にしたところ、2つのいずれかで発生するみたいです。
1.export もしくは import を間違えている
2.setState() 内の記述が誤っている

が、どちらも該当するミス等は見つかりませんでした。

Hoge.jsx
import React, { Fraeegment } from "react";

export const Hoge = () => {

    return(
        <Fraeegment>
          {"Fuga"}
        </Fraeegment>
    )
} 

解決策

importしていたFragmentのスペルが間違っていたため、エラーが発生していました。 Fragmentのスペルを修正したら、解決しました。
Hoge.jsx
import React, { Fragment} from "react";

export const Hoge = () => {

    return(
        <Fragment>
          {"Fuga"}
        </Fragment>
    )
} 

もう一度エラーを見直すと、「エラー:要素タイプが無効です:文字列(組み込みコンポーネントの場合)またはクラス/関数(複合コンポーネントの場合)が必要ですが、取得されました:未定義。」とあり、returnの中にある要素タイプが未定義であるため、要素タイプが無効と怒られていたようです。

参考

https://cpoint-lab.co.jp/article/202005/15172/
9
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
9
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?