Windows で node のバージョンを切り替えるツールはこれまで nodist を使っていて、「久しく更新されていないから他のツールに乗り換えた方がよい」という情報は得ていたがおっくうでやってなかった。
先日、node の新しいバージョンを使うプロジェクトをセットアップしていたら npm ci や npm install で "module not found" というエラーが発生するようになってしまった。
恐らく↓と同様の症状と思う。
こちらには Workaround が書かれているが、この先生き残れないと思うので、他のツールに乗り換えることにした。
ソース資産として、 .node-version
があるので、これを参照してくれることが要件となる。たぶん最も有名である nvm は、この条件を満たさないので除外。
ChatGPT さんに聞きながら探したところ、
が良さそうだったので、こちらに乗り換えることにした。
chocolatey や scoop に対応しているのでコマンドラインからインストールできる。私は scoop 派。
尚、mac では nodenv を使っているが、こちらも久しく更新されていない。今のところは困っていないが、nvs はクロスプラットフォームとのことなので、mac も nvs に乗り換えても良いかも知れない。
nvs は .node-version
を参照して cd したときに自動的に node バージョンを切り替えてくれる、と思っていたのだが、実はそのディレクトリで一度だけ nvs auto
を実行する必要があると判り、ちょっと面倒だなと感じている。しばらく使って慣れてみよう。
nvs やっぱりダメだー。
vscode の launch.json
や tasks.json
で npm コマンドを記述していると、npm コマンドが見つからないというエラーになってしまう。
どうやら vscode からの実行では nvs auto
が効かないようだ。
https://github.com/jasongin/nvs/blob/master/README.md#vs-code-support には vscode で使用するには 「launch.json に nvs 固有の記述」をすれば動作すると書いてあるが、ツール固有の定義をするなら nvm を使えばよいじゃん、となる。
nodist ではこの辺りはよろしくやってくれていたので、それができないと代替にならないなー。
Windows にも対応しており、ディレクトリごとに node バージョンを切り替えられるツールとしては他に Volta - https://volta.sh/ がある。
が、このツールは .node-version
ではなく、package.json
に独自項目を作るらしいのでこちらも要件を満たさない。
もう nvm にして .note-version
から .npmrc
に移行しようか。。。