🕊️

nodeのバージョンが異なる時のエラー解消

2024/12/09に公開

はじめに

下記のコマンドを打ったらエラーが出たので、解消しました。

$ eas build --profile develop --platform ios --local

前提

私のPJでは、nodeのバージョンを現在の最新安定版22に固定するために、それ以外のバージョンをだったらエラーを吐くようにしています。

下記はそのエラーの設定方法です。

.github/workflows/api-pr.ymlでciのnodeバージョンをpackageから取得します。

api-pr.yml
- name: Use Node.js
        uses: actions/setup-node@v3
        with:
          node-version-file: 'package.json'

https://github.com/actions/setup-node?tab=readme-ov-file#usage

デバッグに以下を追記し

api-pr.yml
- name: Check Node Version
        run: node -v

actでpackage.jsonと同じv22になったのを確認

⭐ Run Main Check Node Version
[api database PR Push check/Lint     ]   🐳  docker exec cmd=[bash -e /var/run/act/workflow/2] user= workdir=
| v22.11.0
[api database PR Push check/Lint     ]   ✅  Success - Main Check Node Version
[api database PR Push check/Lint     ] ⭐ Run Post Use Node.js

.npmrcで、package.jsonで指定したnodeのバージョンを使うよう強制
逆にローカルで違うバージョンだと、今まではwarningだったがエラーになります。

engine-strict=true

package.jsonにバージョン指定します。

package.json
"engines": {
    "node": "22.x"
  },

上記の設定を行なっているために、下記のエラーが発生しています。

エラー

nodeのバージョンが22になって欲しいのに、現在はv18.17.1になっているよ!というエラーです。

[INSTALL_DEPENDENCIES] npm
[INSTALL_DEPENDENCIES] ERR! code EBADENGINE
[INSTALL_DEPENDENCIES] npm ERR!
[INSTALL_DEPENDENCIES] engine Unsupported engine
[INSTALL_DEPENDENCIES] npm ERR! engine Not compatible with your version of node/npm: undefined
[INSTALL_DEPENDENCIES] npm
[INSTALL_DEPENDENCIES] ERR! notsup Not compatible with your version of node/npm: undefined
[INSTALL_DEPENDENCIES] npm ERR! notsup Required: {"node":"22.x"}
[INSTALL_DEPENDENCIES] npm ERR! notsup Actual:   {"npm":"10.2.3","node":"v18.17.1"}
[INSTALL_DEPENDENCIES]
[INSTALL_DEPENDENCIES] npm ERR! A complete log of this run can be found in: /Users/mii/.npm/_logs/2024-12-08T12_18_40_420Z-debug-0.log
[INSTALL_DEPENDENCIES]
Error: npm install exited with non-zero code: 1
    at ChildProcess.completionListener

でも、node -vで確認したらバージョンは22でした。

解消方法

nodeのバージョンではなく、eas -vでバージョンを確認

eas -v

★ eas-cli@14.0.2 is now available.
To upgrade, run npm install -g eas-cli.
Proceeding with outdated version.

eas-cli/13.4.2 darwin-arm64 node-v18.17.1

node-v18.17.1と書いてありました!怪しい、、、!

easが置いてある場所を調べたら、volta配下にありました!なぜ、、、

which eas
/Users/mii/.volta/bin/eas

volta配下のeas-cliをアンストしました。

volta uninstall eas-cli
Removed executable 'eas' installed by 'eas-cli'
success: package 'eas-cli' uninstalled

もう一度探したら、nvm配下になっていました!

which eas
/Users/mii/.nvm/versions/node/v22.11.0/bin/eas

これで、バージョンを確認したら、node-v22.11.0になっていました!

eas -v
eas-cli/14.0.2 darwin-arm64 node-v22.11.0

これでエラーが解消しました🎉

Discussion