LoginSignup
1
3

VSCode gopls client: couldn't create connection to server.の解決法

Posted at

表題にあるエラーでめちゃくちゃハマったので、解決策を残します。

[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

解決の手順

以下の手順で解決しました。

  1. goplsのパスを通す
  2. GO111MODULEをオン
  3. 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)を選んでください。
image.png

以下のような画面になると思います。
色々設定はありますが、個人差ありますので、気にしなくて良いです。
image.png

先ほど紹介したIssueにある、以下の設定を追記します!

{
  "gopls": {
    "semanticTokens": true
  }
}

そして、VSCodeを再起動orGoのLSPを再起動すると、、、

image.png

動作しました!!!!!🎉🎉🎉🎉

最後に

今回はかなり苦労した(解決に12時間要した)ので、備忘録的に残しております。Goの環境で苦労される方が1人でも減ることをお祈りいたします🙏

お疲れ様でした!

参考文献

1
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
3