“TypeError: jit_XXXXX_2.ɵfac is not a function” のようなエラーが発生した場合の対処方法 【Angular】【VSCode】

2021年02月17日
投稿者:若林 奨太
カテゴリ:Angular タグ:,

こんにちは。鈴木商店の若林 (@itigoore01) です。

最近タイトルのようなエラーが発生することがありました。
僕の場合は jest での単体テストを走らせたときに、それまでは問題なかった上、特に触ってもいないコンポーネントで発生した問題です。

もしかしたらそれ以外のケースでも発生するかもしれないので、対処方法を備忘録として残しておくことにします。

筆者の環境は次のとおりです。

Angular: v11.0.8
VSCode: v1.53.2
Angular Language Service: v11.2.1

その他:
@nrwl/nx を使用

対象読者

  • VSCodeを使用していて、タイトルのようなエラーが発生して困っている方

対処方法

さっそく対処方法です。

Angular Language Service (VSCode拡張機能) の設定を変更する

VSCodeの設定画面を開き、「Enable-experimental-ivy-prompt」「Experimental-ivy」のチェックを外します。

ちなみに、また再現してしまうことはありますが、次の node_modulesを再インストールする手順だけでも一応直ります。
ivy機能を切りたくなければ、エラーが起きるたびに再インストールすれば一時的にエラーは起きなくなります。(僕はそうしています)

node_modules を再インストールする

プロジェクトの node_modules を再インストールします。

以上で僕の環境では再現しなくなりました。

原因

Angular Language Service で最近追加された ivy 機能が原因っぽいです。
最近のAngular Language Serviceのアップデートで、「ivyを有効にするか?」 みたいなプロンプトが表示されたので、あまり意識せずに有効にしている人もいるかも知れません。

とはいえ、ivy機能自体まだexperimentalなので、どんどんバグを踏んで報告してあげたほうが良さそうですよね。
明確な再現方法も、英語力もないので僕は報告できていないですが、これを見た方は報告してあげてください……。


コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です