mise global が反映されなかった問題を解消した
バージョン管理ツールとしてmiseを使っているが、あるときglobal設定がまったく反映されない問題に遭遇した。原因を調べる過程で、アップデートによるConfigファイルの参照箇所に変更が判あったため、その詳細と解決法を共有する。
発生した問題
miseでNode.jsをglobal環境に設定するため、次のコマンドを実行した。
mise install node@22.14.0
mise use -g node@22.14.0
しかし、node -vを実行すると、以下のエラーが発生してしまう。
No version is set for shim: node
Set a global default version with one of the following:
mise use -g node@22.14.0
設定ファイル(~/.config/mise/config.toml)を確認すると、確かに設定は記載されている。
[tools]
node = "22.14.0"
にもかかわらず、mise ls --currentで確認すると設定が反映されていないことが判明した。
原因
公式ドキュメントを確認したところ、いつの間にかmiseの設定ファイルを読む順序が変わっていた。
現在のmiseは、設定ファイルを次の順番で読み込む(上から順に優先度が高い)。
- mise.local.toml
- mise.toml
- mise/config.toml
- .config/mise.toml(← 今回はこちらが正しい場所だった)
- .config/mise/config.toml(以前はこちらを使っていた)
- .config/mise/conf.d/*.toml
以前は .config/mise/config.toml を使用していたが、miseのバージョンアップで推奨される設定場所が .config/mise.toml に変更されていた。そのため、設定が反映されない状態となっていた。
解決方法
以下の通り設定ファイルを正しい場所に移動して解決。
mv ~/.config/mise/config.toml ~/.config/mise.toml
mise reshim
これにより、node -v で正しくバージョンが表示されるようになった。