Because We Love Happy Coding

フリーライターからエンジニア × 講師。発信力だけあり余ってる感じ

Uncaught TypeError: (void 0) is not a constructor

今日もまたコーディング。だって僕らはHappy Codingが大好きだから。

現象

JavaScriptでclassファイルを使って構築中。

開発者ツールで「Uncaught TypeError: (void 0) is not a constructor」エラーが出た。

原因

該当の箇所は

  import SomeObject from "./SomeObject";
  const someVar = new SomeObject(foobar);

という処理。 何が問題だったかというと、SomeObject.jsの方が問題だった。

class SomeObject{
//(中略)
}

classの先頭にexportを忘れていた。そのため、importしたSomeObjectが0になってしまい、

  const someVar = new 0(foobar);

と等価になってしまっていた。0なんてオブジェクトは存在しないので、当然「そんなコンストラクタはありません」と叱られる結果に。