ClaudeCodeの環境をWindows環境からWSL2環境に移すのが意外とめんどくさかった

昔から使ってるPCなので、なんにも考えずにWindows環境にnodeやらnpmやらを入れてまして。IDEで動かしているだけならなんの問題もなかったんですけど、ClaudeCodeってLinuxのBashの上で動かす前提でファイル操作をしようとするんですよね。なので、ファイルパスを間違えた”CUersMyNameDocumentPhpProjectProjectDirTest.json”みたいな明らかに君パス間違ったよねっていうファイルを吐いたりします。

それはひどい例としても、

  1. “rmでファイル消します”
  2. “ダメでした、delでファイル消します”
  3. “ダメでした、Remove-Itemでファイル消します”

ファイル消すだけで何トークン使うんだよっていう状況もかなり多いです。

WindowsにはWSL2のUbuntuがあるから、パス変えるくらいで簡単に移行できるっしょ……と思っていた時期が俺にもありました。

結論から言うと、結構ハマりました。

Windows側のNode.jsが邪魔をする

WSL2側でnode -v npm -v するとバージョンが表示されるので行けそうな感じです。Claude Code自体もnpmでインストールしてさあ起動!と思ったら、

は?

ググること1時間ほど。WSL2はWindows側のPATHも引き継ぐ仕様になっていて、Windows側にNode.jsが入っていると、そっちが優先されちゃう模様です。which nodeで確認すると/mnt/c/Program Files/nodejs/node.exeとか出てきます。

Linux側からWindows側の管理者権限が必要なフォルダへのアクセスは権限昇格の機能がないっぽいようで、どうやってもうまくいきません。

aptで別にインストールすればいいじゃない

結論:だめでした。

は?(2回目)

これは原因がわからなかったんですけど、aptでインストールしようとするとWindows側のNodeを更新しようとするので、claude起動時と同じエラーが出てました。

WindowsのNode.jsをアンインストールしてWSL側に再インストール

予想する一番めんどくさい方法になりました。

ちなNode.jsはaptのような、管理者権限が必要なパッケージマネージャーでインストールすると動かないモジュールがあったりします。今回の感じだと多分ClaudeCodeも動かなそうな雰囲気。

nvmのレポジトリの推奨方法でインストールするのが一番後腐れがない方法だと思います。

Windowsのホームディレクトリの.claude.jsonや.claudeフォルダの中身はそのままWSL環境の$HOMEにコピペしておきましょう。

C:\Users\kinoko\.claude.json
 ↓
/home/kinoko/.claude.json

C:\Users\kinoko\.claude
 ↓
/home/kinoko/.claude

プロジェクトファイル自体をWSLに移動する

ビルドを伴わない言語とか環境によっては必要ないかもしれませんが、今どきはTypeScriptもSassもビルド前提だと思いますんで、プロジェクト自体をWSL側に移動したほうがいいです。

中間ビルドファイルが悪さしたりもしますので、Windowsのエクスプローラーなどでコピペするより、GitHub経由でcloneし直したほうが多分安全です。

IDEの設定を変更する

Windows側に入っていたNode.jsは、そもそもだいぶ昔にJetBrainsのIDE経由でインストールしたものだったような気がします。近頃はPHPもRustもnpmツールを使う機会が多いですからね。Viteを使う時に入れたのかも。

今はこんな感じでWSL側のNodeを探索して使う機能がついてます。

今使ってる人がいるのかどうかわからないですがDreamWeaverとかもNode.js必須だったような。DWがWSLのNodeを使えるかはちょっとわからないです。

ClaudeCodeの設定修正

ClaudeCodeでは”プロジェクトのパス”を一意なIDとして認識しているようです。.claude.jsonを開いてみると

{
...
"projects":{
  "C:\\Users\\kinoko\\.....": {
    "history": [
      {
        "display": "......",
        "pastedContents":{}
      },
      ...
    ]
  },
  ...
}

みたいな箇所があると思います。チャットヒストリやMCPサーバの設定などを引き継ぎたい場合は”projects”オブジェクト直下のパスを”/home/kinoko/….”のように変えれば引き継げると思います。めんどくさかったのでやりませんでしたけど。

MCPサーバの設定は引き継げましたがヒストリは引き継ぎダメでした。

結局、何が問題だったのか

まとめるとこんな感じです。

  • WSL2はWindowsのPATHを引き継ぐ: Windows側のNode.jsが優先される
  • WSL2からはWindows側のNode.jsの使用にかなり制限がある
  • Node.jsはaptで入れちゃダメ

これからWindowsで開発する人は真っ先にWSL2入れましょう。

まぁでも移行して良かった

苦労はしましたけど、WSL2環境でClaude Codeを使えるようになると、やっぱり快適です。冒頭のファイル消すのに何手かけるんじゃい問題が無いだけでも快適ですし、jqとかrgとかdfとか入れるのもコマンド一発ですし。

同じようにハマってる人の参考になれば幸いです。

コメント

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です