我试图将本地包(令牌)导入到项目的目录中,但是当尝试如下图所示构建Gateway子目录时,我总是收到错误消息,指出无法在GOROOT目录中找到该包< / p>
这是目录结构的样子:
~goProjects/src
-Project
-Gateway
-main.go
-token
-token.go
在Gateway子目录中:
go build
package Project/token is not in GOROOT (/usr/local/go/src/Project/token)
这是我尝试将本地包“令牌”导入到我的Gateway main.go文件中的方式:
package main
import (
"Project/token"
)
这是我的环境设置:
GO111MODULE=""
GOARCH="amd64"GOBIN=""
GOCACHE="/home/nexxus/.cache/go-build"
GOENV="/home/nexxus/.config/go/env"GOEXE=""GOFLAGS=""
GOHOSTARCH="amd64"GOHOSTOS="linux"
GOINSECURE=""
GONOPROXY=""
GONOSUMDB=""
GOOS="linux"
GOPATH="/home/nexxus/goProjects"
GOPRIVATE=""GOPROXY="https://proxy.golang.org,direct"
GOROOT="/usr/local/go"
GOSUMDB="sum.golang.org"
GOTMPDIR=""
GOTOOLDIR="/usr/local/go/pkg/tool/linux_amd64"GCCGO="gccgo"
AR="ar"
CC="gcc"
CXX="g++"
CGO_ENABLED="1"
GOMOD=""
在阅读了几篇有关如何编写go代码的文章之后,我看过几次引用该文章,看来编译器应该检查GOPATH包以及GOROOT目录。看来我的构建过程似乎不是先查看我的GOPATH,而只是检查GOROOT,而不是在那里找到本地包,然后退出
在尝试构建网关目录之前,我已经成功编译了令牌包。有人对我在做什么错有建议吗?
答案 0 :(得分:3)
我怀疑您正在使用Go 1.14,在这种情况下,除非您关闭Go模块,否则就不会使用GOPATH(至少以您期望的方式)。
$ export GO111MODULE = off
但是正如@Subham Sarkar明智建议的那样,您应该使用Go模块。
$ go mod init项目
但是,如果这不仅仅是测试,则不应使用名称“ Project”,而应使用不会冲突的名称,例如“ github.com/yourname/Project”。