表題にあるエラーでめちゃくちゃハマったので、解決策を残します。
[Error - 10:13:34 PM] gopls client: couldn't create connection to server.
Message: Pending response rejected since connection got disposed
Code: -32097
[Error - 10:13:35 PM] The gopls server failed to initialize.
[Error - 10:13:35 PM] gopls client: couldn't create connection to server.
Message: Pending response rejected since connection got disposed
Code: -32097
Error starting language server: Error: Pending response rejected since connection got disposed
解決の手順
以下の手順で解決しました。
- goplsのパスを通す
- GO111MODULEをオン
- VSCodeの設定から
semantictokens
をtrue
サクッと説明しましたが、少し難しいので細かく説明していきます。
goplsのパスを通す
パスの確認
まず、goplsのパスを確認します。
% which gopls
以下のようにレスポンスが返って来れば
このセクションを進めます。
もし/Users/ユーザ名/go/bin/gopls
と返って来れば
このセクションは飛ばしましょう!
gopls not found.
パスを通す
以下のコマンドでパスを通します。
% codesign -f -s - /Users/ユーザ名/go/bin/gopls
すると、goplsが確認できるようになります!
% which gopls
/Users/yuuki/go/bin/gopls
~/go/bin/gopls
はみなさんの環境によって違うかもしれません。
(大抵はUsers/ユーザ名
配下のgo/bin
にあると思います)
ただ、このタイミングではgoplsは正常に動作せず、以下のようになります。
% gopls
zsh: killed gopls
この状態でVSCodeを起動し、Outputタブ(gopls(server)
)を見ると以下のような表示が出ます。何かしらのパッケージのダウンロードに失敗します。
go: downloading google.golang.org/appengine/v2 v2.0.1 failed.
そこで、次のセクションです!
GO111MODULEをオン
以下のエラーを解決するため、とあるIssueを参考にしました。
go: downloading google.golang.org/appengine/v2 v2.0.1 failed.
こちらのIssueの最後には
hmm the problem might've been i ran with GO111MODULES=on instead of GO111MODULE=on inside my GOPATH project.
というありがたいヒントが海外ニキより残されていますので、こちらを参考にGO111MODULEをオンにします。
% go env -w GO111MODULE=on
そしてVSCodeを再起動すると以下のエラーが出ると思います。
[Error - 9:34:47 PM] Request textDocument/semanticTokens/range failed.
Message: semantictokens are disabled
Code: 0
このエラーを次のセクションで解決します!
VSCodeの設定からsemantictokens
をtrue
こちらも海外ニキのIssueを参考にしました!
(ありがとう海外ニキ!!)
ctrl+shif+p
でパレットを開き、Settingと検索し、
Open User Settings(JSON)
を選んでください。
以下のような画面になると思います。
色々設定はありますが、個人差ありますので、気にしなくて良いです。
先ほど紹介したIssueにある、以下の設定を追記します!
{
"gopls": {
"semanticTokens": true
}
}
そして、VSCodeを再起動orGoのLSPを再起動すると、、、
動作しました!!!!!🎉🎉🎉🎉
最後に
今回はかなり苦労した(解決に12時間要した)ので、備忘録的に残しております。Goの環境で苦労される方が1人でも減ることをお祈りいたします🙏
お疲れ様でした!
参考文献