CodeBuildで “The engine “node” is incompatible with this module.” が発生しました。
前回リリース時にはうまくビルドできたのに、同じソースに戻して再度ビルドしたら、エラーが出力されました。その時の対処法を記載します。
事象
言語やビルド環境は、以下の通り。
- node.js
- vue.js
- CodeBuild → buildspec.yaml を利用
- ビルドシステム → npm
ビルドしたところ、以下のようなエラーログが発生。
[3/5] Fetching packages...
error commander@9.0.0: The engine "node" is incompatible with this module. Expected version "^12.20.0 || >=14". Got "12.16.1"
error Found incompatible module.
原因
エラーログを確認します。
error commander@9.0.0: The engine "node" is incompatible with this module. Expected version "^12.20.0 || >=14". Got "12.16.1"
上記を見ると、
- commander 9.0.0とnodeの関係でエラーとなっている
- commander 9.0.0は、nodeのバージョンが「12.20.0」または「14以上」を求めている
- 実際のnodeのバージョンは、12.16.1となっている
ということがわかります。
buildspec.yamlのruntime-versionsを確認すると、nodejs: 12を指定していました。
ここでは、マイナーバージョンの指定されておらず、CodeBuildの判断で12.16.1を利用しているようです。
version: 0.2
phases:
install:
runtime-versions:
nodejs: 12
pre_build:
commands:
- echo npm install
- npm install
- yarn install
build:
commands:
- npm run build
対処法
buildspec.yamlでnodejsのバージョンを12.20.0とマイナーバージョンまで指定できればよいのですが、どうやら実質できないようです。
そのため、nodejs: latest を設定しました。
version: 0.2
phases:
install:
runtime-versions:
nodejs: latest
pre_build:
commands:
- echo npm install
- npm install
- yarn install
build:
commands:
- npm run build
これで無事、ビルドが実施できました。
まとめ
今回は、CodeBuildで “The engine “node” is incompatible with this module.”が発生したときの対処法を紹介しました。
また、冒頭記載した「前回リリース時にはうまくビルドできたのに、同じソースに戻して再度ビルドしたら、エラーが出力されました。」ですが、直近で「commander 9.0.0」の仕様が変わり、対応できるnodeのバージョンが変更されていました。
コメント