[AWS] CodeBuildで “The engine “node” is incompatible with this module.” が発生したときの対処法

スポンサーリンク
AWS

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のバージョンが変更されていました。

コメント

タイトルとURLをコピーしました