PCを新調したので早速いろいろ試しているのですが、WSL2上のUbuntuで本格的に開発環境を構築しています。今まではPCのスペックが微妙で重たくて使うの避けてたVSCodeもサクサク動作するようになったということで、VSCodeを中核としています。その中でUbuntuを20.04から24.04にアップグレードしたのがキッカケだったように思えるのですが、結構謎なハマりをしたので備忘録として書いておきます。
症状
プラグインも概ねセットアップし終わり、テストで作ったワークスペースを使ってgit周りの設定をしようと思ったところ、commitしようとすると「Error: connect ENOENT /run/user/1000/vscode-git-xxx.sock at PipeConnectWrap.afterConnect [as oncomplete]」なるエラーが出て、どうにもcommitができなくなりました。
エラーを確認すると-mオプション付けてcommitするのもアリなことが記載されていたので、試しにターミナルから-mオプションでメッセージを指定してgit commitすると問題なくcommitでき、またVSCodeのSCMのペインにはcommit情報が問題なく表示されていました。
切り分けしてみた
まず疑ったのはVSCodeのWSLプラグイン設定でミスがあったのではということで、.vscode-XXXなディレクトリを全消ししてワークスペースを開きなおすも解決できずでした。
再度エラーメッセージをよく確認すると ${HOME}/.vscode-server/bin/xxxxxxx/extensions/git/dist 配下にある git-editor.sh で問題が発生している旨の記述を発見、中身を確認すると…
#!/bin/sh
ELECTRON_RUN_AS_NODE="1" \
"$VSCODE_GIT_EDITOR_NODE" "$VSCODE_GIT_EDITOR_MAIN" $VSCODE_GIT_EDITOR_EXTRA_ARGS "$@"
うーん…何もヒントは得られずで…。
もう一度エラーメッセージを確認。
Unable to connect to VS Code server: Error in request.
Error: connect ENOENT /run/user/1000/vscode-ipc-xxxx.sock
at PipeConnectWrap.afterConnect [as oncomplete] (node:net:1161:16) {
errno: -2,
code: 'ENOENT',
syscall: 'connect',
address: '/run/user/1000/vscode-ipc-5cc265b0-6bec-4e0e-99c7-8fc48bccd7c4.sock'
}
ん?/run/user配下のファイルって存在してないじゃん…汗
socketファイルにアクセスできないからcommitメッセージ編集時にVSCodeを開こうとした際エラーになっているのだろうと想定したものの、果てさてどう直せばよいものやら…
解決策
ひたすらググってやっとIssue見つけました。
https://github.com/microsoft/vscode-remote-release/issues/6997
結論から言うと、以下のコマンドを実行したらソケットファイルが現れて、問題なくcommit時にVSCodeが開くようになりました。
VSCODE_IPC_HOOK_CLI=$( lsof | grep $UID/vscode-ipc | awk '{print $(NF-1)}' | head -n 1 )
ただなぜこれで解消するのかイマイチ理解できないのがモヤっとはしますが、まぁとりあえず動いたのでヨシとします。そのうちIssueのページをよく読んでみよう…(きっと読まない)