Golang vscode 環境エラー gopls はワークスペース ソリューションでモジュールを見つけることができませんでした

目次

エラーメッセージ

分析する

解決

方法 1: ワークスペースとプロジェクト パスの一貫性を保つ

解決策 2: go work を使用して、ワークスペースに含まれるモジュールを指定する

要約する


エラーメッセージ

Golangを古いバージョンからgo1.20.5にアップグレードしてvscodeを開いたところ、コードが自動補完できず、エラーメッセージが出てvscodeが飛び出してしまいました。

gopls はワークスペース内でモジュールを見つけることができませんでした。

GOPATH の外にいる場合、gopls はどのモジュールで作業しているかを知る必要があります。

この問題を修正するには、ワークスペースを Go モジュール内のフォルダーに開くか、

go.work ファイルを使用して複数のモジュールを指定します。

ワークスペースの設定の詳細については、ドキュメントを参照してください。

分析する

上記のエラー メッセージは非常に簡潔です。golang は v1.11 から go mod メカニズムを導入しました。go mod メカニズムを改善するために、v1.18 からマルチモジュール ワークスペース メカニズムも導入されました (どの mod をワークスペースに含める必要があります)。 ? Inside)、つまり go work メカニズムでは、以前のバージョンから v1.18 以降にアップグレードした後、vscode 作業環境でエラーが報告される場合があります。

私の vscode で開かれたフォルダーのパスはデフォルトでそのワークスペース (ワークスペース) として設定されており、このワークスペースのルート ディレクトリには go.mod ファイルが必要です。ルート ディレクトリにこの go.mod がない場合は、どのディレクトリに go.mod があるかを指定する必要があります。サブディレクトリ go mod 作業領域への組み込みは少し複雑です。以下の内容を要約します。

  • 一般に、プロジェクトのルート ディレクトリはワークスペースとして使用されます。プロジェクトの親ディレクトリまたはサブディレクトリがワークスペースとして使用される場合は、 go work コマンドを使用して、ワークスペースにどの MOD が含まれているかを示す必要があります。
  • ワークスペースのルート ディレクトリに go.mod が存在する必要があります。go.mod がない場合は、生成できます。ワークスペースの下に生成したくない場合は、 go work コマンドを使用して、ワークスペース内のどの MOD をワークスペースに含める必要があるかを示します

 解決する前に:

 

解決

方法 1: ワークスペースとプロジェクト パスの一貫性を保つ

vscode はディレクトリを再度開き、プロジェクト フォルダーを直接開き、プロジェクト パスをワークスペースとして使用し、プロジェクト パスのルート ディレクトリにすでに go.mod が存在するため、vscode はプロジェクト パスを直接開きます。

gopls はエラーを報告しません

図に示すように vscode が開きます。

解決策 2: go work を使用して、ワークスペースに含まれるモジュールを指定する

図に示すように、プロジェクト ディレクトリの親ディレクトリをワークスペースとして使用し、 go work コマンドを使用して必要なモジュールをワークスペースに組み込みます。

 図に示すように vscode が開きます。

要約する

この小さな問題の解決策は、主にワークスペースの概念を理解することです。ワークスペースには複数のモジュールを含めることができます。ワークスペースが独自のプロジェクト パスと一致しており、プロジェクトのルート ディレクトリに go.mod があることが良い習慣です。

ワークスペースがプロジェクトのパスと一致しない場合は、go work を使用してモジュールを独自のワークスペースに組み込む必要があります。go work のパスはワークスペースの相対パスです。

おすすめ

転載: blog.csdn.net/u011285281/article/details/131261615