Corredor

ウェブ、プログラミングの勉強メモ。

Angular5 にアップデートして「Metadata version mismatch for module」エラーが出た

Angularアプリケーションプログラミング

Angularアプリケーションプログラミング

まさに以下の記事どおりの事象に遭遇し、記事どおりの対応方法で修正できた話。

自分の場合は、

  • Angular 製のライブラリを作成する段階で、
    • @angular/compiler-cli を v1.5 系にバージョンアップしたが、
    • package.json に記載のバージョンを上げていなかった。
    • この状態で AoT コンパイルしたファイルをプライベート npm リポジトリに publish した。

という状態で、Angular4 系のアプリにそうやって作ったライブラリを取り込んだところ、

ERROR in Error: Metadata version mismatch for module 【モジュールファイルパス】.ts, found version 3, expected 4

というエラーが出た。

確かに、AoT コンパイル時に生成される .metadata.json を見ると、先頭の方に "version":4 と記載があった。コレが "version":3 でないと、Angular4 系のアプリとしては不正、ということになるらしい。

だもんで、ひとまずは Angular4 系で動作するようにと、AoT コンパイル時に使用される @angular/compiler-cli のバージョンを下げておいた。