1. ホーム
  2. go

goland reports an error: package XXX is not in GOROOT (X:\XXXGo ╱src╱XXX)

2022-02-13 20:42:52
<パス

プロジェクトのシナリオです。

新しいプロジェクトが作成され、コードが書かれ、要件が機能するようになりました


質問の説明

新しいプロジェクトは、コードを書いて、コンパイラの実行エラーを使用して、手動で行く実行CODEと問題ない。
詳細なエラーメッセージ

package Projectname is not in GOROOT (C:\Program Files\Go\src\Projectname)

Compilation finished with exit code 1



原因分析。

GOROOT配下でパッケージを探す必要があると報告しているので、パスの問題か、環境設定の問題であるはずです。go envと入力して環境を確認したところ、GO111MODULE=onで、コンパイラはgopath以下にパッケージを探しに行くことはありませんでした。
gomodとgopath 2パッケージ管理方式、および互いに互換性がありません、gopathでパッケージを見つけるために、gorootと複数のgopathディレクトリsrc/xxxによると順番に。gomodでは、パッケージはgo.modファイルを解析することによって発見され、modパッケージ名は、パッケージの接頭辞であり、内部のディレクトリは、その後のパスです。gomod モードでは、パッケージの検索は gopath には行かず、gomod パッケージだけが gopath/pkg/mod にキャッシュされます。


解決策

GO111MODULEをオフに設定するだけです。

go env -w GO111MODULE=off


この問題は、原因を突き止めると https://blog.csdn.net/Magic_Ninja/article/details/103214211