搭建Go工作区时出现package apps/app1不在GOROOT的错误
问题描述
项目结构:
apiv3 - model - controller - view apps - app1 - app2 - app2
在apiv3中以apps/app1的导入路径引用apps包,已按Go工作区步骤创建工作区,Go版本1.18.3,GO ENV输出:
GO111MODULE="on" GOARCH="amd64" GOBIN="" GOCACHE="/home/pc6/.cache/go-build" GOENV="/home/pc6/.config/go/env" GOEXE="" GOEXPERIMENT="" GOFLAGS="" GOHOSTARCH="amd64" GOHOSTOS="linux" GOINSECURE="" GOMODCACHE="/home/pc6/go/pkg/mod" GONOPROXY="" GONOSUMDB="" GOOS="linux" GOPATH="/home/pc6/go" GOPRIVATE="" GOPROXY="https://proxy.golang.org,direct" GOROOT="/usr/local/go" GOSUMDB="sum.golang.org" GOTMPDIR="" GOTOOLDIR="/usr/local/go/pkg/tool/linux_amd64" GOVCS="" GOVERSION="go1.18.3" GCCGO="gccgo" GOAMD64="v1" AR="ar" CC="gcc" CXX="g++" CGO_ENABLED="1" GOMOD="/dev/null" GOWORK="/home/pc6/workspace2/go.work" CGO_CFLAGS="-g -O2" CGO_CPPFLAGS="" CGO_CXXFLAGS="-g -O2" CGO_FFLAGS="-g -O2" CGO_LDFLAGS="-g -O2" PKG_CONFIG="pkg-config" GOGCCFLAGS="-fPIC -m64 -pthread -fmessage-length=0 -fdebug-prefix-map=/tmp/go-build1440253706=/tmp/go-build -gno-record-gcc-switches"
在工作区目录执行go run apiv3时,报错:package apps/app1 is not in GOROOT (/usr/local/go/src/apps/app1)
解决方案
- 将apiv3和apps转为Go模块:分别进入两个目录执行初始化命令:
cd apiv3 go mod init apiv3 cd ../apps go mod init apps - 检查go.work文件配置:确保工作区文件正确包含两个模块,内容需类似:
go 1.18 use ( ./apiv3 ./apps ) - 确认导入路径合法性:apiv3中导入
apps/app1时,需保证apps/app1目录下存在Go文件,且文件的package声明为app1。 - 修正运行命令:在go.work所在的工作区目录执行:
go run ./apiv3
(使用./apiv3明确指定本地模块路径,避免Go尝试从GOROOT查找)
内容的提问来源于stack exchange,提问作者Amandeep kaur
相关产品推荐
相关产品推荐

