Golang导入本地包失败

时间:2020-05-25 00:12:03

标签: go

我试图将本地包(令牌)导入到项目的目录中,但是当尝试如下图所示构建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,而不是在那里找到本地包,然后退出

在尝试构建网关目录之前,我已经成功编译了令牌包。有人对我在做什么错有建议吗?

1 个答案:

答案 0 :(得分:3)

我怀疑您正在使用Go 1.14,在这种情况下,除非您关闭Go模块,否则就不会使用GOPATH(至少以您期望的方式)。

$ export GO111MODULE = off

但是正如@Subham Sarkar明智建议的那样,您应该使用Go模块。

$ go mod init项目

但是,如果这不仅仅是测试,则不应使用名称“ Project”,而应使用不会冲突的名称,例如“ github.com/yourname/Project”。