web-dev-qa-db-ja.com

vScodeでGOモジュールを正しく使用する方法?

私は私のMac上で数ヶ月間vScode 1.41.1を使用しました、そして私が依存関係のためにGOモジュールを使い始めるまで良く機能しました。現時点では、簡単なツールを書き換えて、別々の機能のためにパッケージを導入しています。

コード構造は次のようになります。

├── bmr.go -> package main & main(), uses below packages
├── check
│   ├── check.go -> package check
│   └── check_test.go
├── go.mod
├── go.sum
├── Push
│   ├── Push.go -> package Push
│   └── Push_test.go
└── s3objects
    ├── s3objects.go -> package s3objects
    └── s3objects_test.go
 _

My go.modファイルは次のようになります。

module github.com/some-org/business-metrics-Restore.

go 1.13

require (
        github.com/aws/aws-sdk-go v1.28.1
        github.com/go-redis/redis v6.15.6+incompatible
        github.com/sirupsen/logrus v1.4.2
        github.com/spf13/viper v1.6.1
        github.com/stretchr/testify v1.4.0
        golang.org/x/sys v0.0.0-20200113162924-86b910548bc1
)
 _

シェルからMod Test/Run/Buildコマンドを呼び出すと、すべて問題ありません。しかし、「デバッグ」 - >「デバッグなしで実行」を使用すると、次のようになります。

go: finding github.com/some-org/business-metrics-restore/Push latest
go: finding github.com/some-org/business-metrics-restore latest
go: finding github.com/some-org/business-metrics-restore/check latest
go: finding github.com/some-org/business-metrics-restore/s3objects latest
build command-line-arguments: cannot load github.com/some-org/business-metrics-restore/check: module github.com/some-org/business-metrics-restore@latest found (v0.0.0-20191022092726-d1a52439dad8), but does not contain package github.com/some-org/business-metrics-restore/check
Process exiting with code: 1
 _

現在、私のコードは機能ブランチにあり、D1A52439DAD8は最初(init)で、マスターでのみコミットします。ツールのコード(3つ記載の非メインパッケージ)のコードはマスターブランチにあります。ここでの問題は、上記のvscodeがマスターからの状態を取得し、この動作を上書きすることはできません。

誰かが助けてくれることができますか?

ありがとう!

敬意を表す、ラファル。

4
Rafał Radecki

GO.MODがプロジェクトのルートにない場合は、vscodeが正しく機能しないことに気付きました。

これは、 Gopls V0.5.1 とその実験機能のマルチモジュールワークスペースのサポート 提案32394 との間、(2020年10月)がサポートされる可能性があります。

複数のモジュールがない場合でも、(プロジェクトのルートフォルダの代わりに(プロジェクトのルートフォルダの代わりに)サブフォルダのgo.modが管理されます(gopls.experimentalWorkspaceModule設定を有効にする場合)。

2
VonC