環境
- Nodejs v18
やりたいこと
nodenvで管理しているNode.jsの各バージョンに対して、適切な最新版のnpmをグローバルインストールしたい。
npmをグローバルにアップデートしようとしたら、こんなエラーが出た。
$ npm install -g npm npm ERR! code EBADENGINE npm ERR! engine Unsupported engine npm ERR! engine Not compatible with your version of node/npm: npm@11.1.0 npm ERR! notsup Not compatible with your version of node/npm: npm@11.1.0 npm ERR! notsup Required: {"node":"^20.17.0 || >=22.9.0"} npm ERR! notsup Actual: {"npm":"10.2.3","node":"v18.19.0"}
npm@11.1.0
はNode.js v18.19.0では動かないよ、って言われてる。
原因
Node.jsのメジャーバージョンによって、npmの対応するバージョンも変わってくるから、ちゃんと管理しないとダメってことだ。 色々調べた結果、nodenvでNode.jsのバージョンを切り替えるたびに、以下のルールでnpmをインストールし直すのが良さそう。
- Node.js v10: ^7
- Node.js v12: ^7
- Node.js v14: ^9
- Node.js v16: ^9
- Node.js v18: ^10
- Node.js v20以降: 最新版
これで、Node.jsのバージョンを切り替えても、npmで困ることはなくなるはずだ。 Node.jsとnpmのバージョンの組み合わせは、意外と落とし穴が多いから、気をつける必要がある。