50
26

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

vscodeでサブディレクトリにgo.modを管理している場合はexperimentalWorkspaceModuleを有効化する必要がある

Last updated at Posted at 2020-12-01

コメントで指摘頂いた通り、ExperimentalWorkspaceModuleはdeprecatedになったため、VSCode の Multi-root Workspaces 拡張機能かgo.workを利用することを推奨します。
https://qiita.com/chanhama/items/a21ca7d5cd43d6f3f90d#comment-55530e230c93991ef5c0

以下のようなディレクトリ構成でgoprojectディレクトリから開くとvscodeがサブディレクトリのgo.modを認識してくれず、can not importエラーが発生し困っていました。

goproject
|- test1
|  |- mani.go
|  |- go.mod
|  |- go.sum
|- test2
   |- mani.go
   |- go.mod
   |- go.sum

調べたところLanguage Serverのgoplsのデフォルト設定だとルートディレクトリにgo.modファイルが無いとダメなようで、experimentalWorkspaceModuleの有効化で上記が解決しました。

環境

  • macOS Catalina v10.15.7
  • vscode v1.51.1
  • go version go1.15 darwin/amd64

有効化

拡張機能

vscodeの拡張機能でGoをインストールします。
拡張機能__Go_—_tipstar-ops.png

Language Server

Code > Preferences > Settings から go.useLanguageServer を検索して有効化します。
設定_—_tipstar-ops.png

GO111MODULE

vscodeのsettings.jsonを開き、以下を設定します。

{
    "go.toolsEnvVars": {"GO111MODULE": "on"},
}

gopls

cmd+shift+Pでコマンドパレットを開き、Go: Install/Update Tools を検索した後で gopls を選択してインストールします。

gopls.png

実行後、goplsのバージョンがv0.5.0以上であることを確認してください。

$ gopls version
golang.org/x/tools/gopls v0.5.4
    golang.org/x/tools/gopls@v0.5.4 h1:PkQWDfzw8CxoseHDQniF2GhzmndN8KnQL6gcG2gnF3Y=

なお、コマンド実行時にxcron errorが発生した場合はxcode-selectをインストールしてください。

# エラー内容
xcrun: error: invalid active developer path (/Library/Developer/CommandLineTools), missing xcrun at: /Library/Developer/CommandLineTools/usr/bin/xcrun 
undefined

# インストール
xcode-select --install

experimentalWorkspaceModule

vscodeのsettings.jsonを開き、以下を設定します。

{
    "gopls": { "experimentalWorkspaceModule": true}
}

以上です。importエラーが解決しないようであれば、vscodeを再起動してください。

参考

https://github.com/golang/go/issues/37838
https://github.com/golang/go/issues/32394#issuecomment-728194166

50
26
3

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
50
26

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?