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 で正しくバージョンが表示されるようになった。