昔から使ってるPCなので、なんにも考えずにWindows環境にnodeやらnpmやらを入れてまして。IDEで動かしているだけならなんの問題もなかったんですけど、ClaudeCodeってLinuxのBashの上で動かす前提でファイル操作をしようとするんですよね。なので、ファイルパスを間違えた”CUersMyNameDocumentPhpProjectProjectDirTest.json”みたいな明らかに君パス間違ったよねっていうファイルを吐いたりします。
それはひどい例としても、
- “rmでファイル消します”
- “ダメでした、delでファイル消します”
- “ダメでした、Remove-Itemでファイル消します”
ファイル消すだけで何トークン使うんだよっていう状況もかなり多いです。
WindowsにはWSL2のUbuntuがあるから、パス変えるくらいで簡単に移行できるっしょ……と思っていた時期が俺にもありました。
結論から言うと、結構ハマりました。
Windows側のNode.jsが邪魔をする
WSL2側でnode -v npm -v するとバージョンが表示されるので行けそうな感じです。Claude Code自体もnpmでインストールしてさあ起動!と思ったら、
/usr/bin/env: ‘node’: Permission denied
は?
ググること1時間ほど。WSL2はWindows側のPATHも引き継ぐ仕様になっていて、Windows側にNode.jsが入っていると、そっちが優先されちゃう模様です。which nodeで確認すると/mnt/c/Program Files/nodejs/node.exeとか出てきます。
Linux側からWindows側の管理者権限が必要なフォルダへのアクセスは権限昇格の機能がないっぽいようで、どうやってもうまくいきません。
aptで別にインストールすればいいじゃない
結論:だめでした。
Error: EACCES: permission denied
は?(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とか入れるのもコマンド一発ですし。
同じようにハマってる人の参考になれば幸いです。





コメントを残す