Go プロジェクトの「パッケージ XXX は GOROOT にありません」エラー
このエラーは、Go プロジェクトをビルドまたは実行しようとして次のシナリオが発生したときによく発生します。
-
プロジェクトは次のように構成されています
src/
|--project
|--game
|--entity
|--whatever.go
|--game_stuff.go
|--server
ログイン後にコピー
- GOROOT は正しいパス (例: C:Go) に設定されています。
原因
Go の最近のバージョン(1.13 以降)、GOPATH や GOBIN などの環境変数を設定する必要はなくなりました。代わりに、プロジェクトのルートには、Go モジュールとして示す go.mod ファイルが含まれている必要があります。
解決策
この問題を解決するには、次の手順に従います。
-
go.mod ファイルを作成します: プロジェクトのルート ディレクトリで go mod init を実行します。 [remote-repo.com/username/repository].
-
メイン パッケージを定義します: go.mod ファイル内で、メイン パッケージのパッケージ パス (例: github.com) を指定します。 /yourname/calculatorv3) とそのメイン ファイル (例: main.go).
-
古い環境変数を削除します: 以前に GOPATH と GOBIN を設定していた場合は、環境設定からそれらの行を削除するかコメントアウトしてください。
-
プロジェクトを再ビルドまたは実行します: go build または go run コマンドを再実行します。これにより、プロジェクトの構造とビルドが正しく認識されるようになります。または、適切なパッケージを実行します。
例
提供されているサンプル プロジェクト構造の場合:
-
プロジェクト内に go.mod ファイルを作成します。ルート ディレクトリに移動し、以下を含めます:
module github.com/myorg/myproject
go 1.17
require (
github.com/myorg/gameutils v1.2.3
)
ログイン後にコピー
- main.go が配置されていることを確認します。 project/server ディレクトリ内。
-
古い環境変数を削除するかコメントアウトします。
# GOPATH=$HOME/go # Assuming previous GOPATH setting
ログイン後にコピー
- go build -o server project/server を再実行して、プロジェクトをビルドします。
追加メモ
- プロジェクトの場合外部パッケージを使用している場合は、go get または go mod tiny を使用してインストールされていることを確認してください。
- エラーが解決しない場合は、go clean -modcache を使用して Go キャッシュをクリアしてみてください。
以上がGo プロジェクトで「パッケージ XXX は GOROOT にありません」というエラーが表示されるのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。