関連

Cannot read property 'createElement' of undefined

TypeScript 環境で置きている場合、tsconfig.jsonesModuleInteropが未設定または、false設定の時に、

import React from 'react';

のように読み込んでると起こります。esModuleInteropがオフの場合以下のように読み込むのが正解です。

import * as React from 'react';

React は UMD で定義されていてその中身は、

module.exports = {
  createElement: /* ... */,
  /* ... */,
}

のようだと定義されてます。これでesModuleInteropをオンにすると、この中身がすべてdefaultからも強制的にエクスポートされるようになります。

module.exports = {
  default: {
    createElement: /* ... */,
    /* ... */,
  },
  createElement: /* ... */,
  /* ... */,
}

import <name> from <module><name>defaultを見てるので、esModuleInteropがオフの場合はこれが無くエラーとなるのだと思います。

JavaScript で飯食べたい歴約 5 年、 純( nju33 ) によるノートサイトです。

このサイトではドリンク代や奨学金返済の為、広告などを貼らせて頂いてますがご了承ください。

Change Log