Go 專案中出現「package XXX is not in GOROOT」錯誤
當嘗試建置或執行Go 專案並遇到以下場景時,經常會出現此錯誤:
-
專案的架構如下如下:
src/
|--project
|--game
|--entity
|--whatever.go
|--game_stuff.go
|--server
登入後複製
- GOROOT 設定為正確的路徑(例如 C:Go)。
原因
在 Go 的最新版本(1.13 之後),不再需要設定 GOPATH 和 GOBIN 等環境變數。相反,專案的根目錄應包含一個 go.mod 文件,該文件將其表示為 Go 模組。
解決方案
要解決此問題,請按照以下步驟操作:
-
建立go.mod檔:在專案根目錄下,運行go mod init [remote-repo.com/username/repository].
-
定義主套件: 在go.mod 檔案中,指定主套件的套件路徑(例如github.com)/yourname/ calculatorv3) 及其主文件(例如main.go)。
-
刪除過時的環境變數:如果您之前設定了 GOPATH 和 GOBIN,請從環境配置中刪除或註解掉這些行。
-
重新建置或執行專案:重新執行 go build 或go run命令,現在將正確識別項目的結構並構建或運行適當的package.
示例
對於提供的示例項目結構:
-
在專案根目錄中建立一個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 tidy 安裝它們。
- 如果錯誤仍然存在,請嘗試使用 go clean -modcache 清除 Go 快取。
以上是為什麼我的 Go 專案出現「package XXX is not in GOROOT」錯誤?的詳細內容。更多資訊請關注PHP中文網其他相關文章!