CodeBuildで “The engine “node” is incompatible with this module.” が発生しました。
前回リリース時にはうまくビルドできたのに、同じソースに戻して再度ビルドしたら、エラーが出力されました。その時の対処法を記載します。
事象
言語やビルド環境は、以下の通り。
- node.js
 - vue.js
 - CodeBuild → buildspec.yaml を利用
 - ビルドシステム → npm
 
ビルドしたところ、以下のようなエラーログが発生。
[3/5] Fetching packages...
error [email protected]: The engine "node" is incompatible with this module. Expected version "^12.20.0 || >=14". Got "12.16.1"
error Found incompatible module.原因
エラーログを確認します。
error [email protected]: 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のバージョンが変更されていました。
  
  
  
  


コメント