"go build ./..."无法找到包。

3

我知道互联网上充满了类似的问题,我尝试了所有建议的解决方案,但至少在两天内无法解决。

我正在尝试部署一个小型的Go服务器,我使用IntelliJ IDEA,并且它很好用,可以构建和运行我的代码,但是如果我使用终端:

go build ./...

我看到的是这样的:

OS-X-Dennis:backend denis$ go build ./...
out/production/mypocket_backend/server.go:4:2: cannot find package "api.jwt.auth/routers" in any of:
        /usr/local/go/src/api.jwt.auth/routers (from $GOROOT)
        /Users/denis/Programming/Golang/src/api.jwt.auth/routers (from $GOPATH)

操作系统为OS X 10.11.2,使用的是IntelliJ IDEA 2016.1版本。
$GOPATH路径为"Users/denis/Programming/Golang"。
$GOROOT路径为"/usr/local/go"。
$PATH路径为"$PATH:$GOPATH/bin"。
以上路径是否正确?

这是我的工作结构:

/Golang/
 .bin/
 .pkg/
    .darwin-amd64/
         .//other folders/
 .src/
     .github.com/
     .backend/ //project's source
           /src
              /api.jwt.auth/
                //source code
           .server.go - file with main func
          //other files as example .gitignore
     .//other folders// 

这是我的主文件和整个项目结构的屏幕截图: enter image description here 我发现日志向我展示了错误的项目路径。
 now
 /Users/denis/Programming/Golang/src/api.jwt.auth/routers
should
 /Users/denis/Programming/Golang/src/backend/src/api.jwt.auth/routers

我不知道应该在哪里更正这个路径。


你怎么导入 api.jwt.auth 包?我强烈感觉你没有正确导入。 - nevets
应该使用 import "backend/src/api.jwt.auth",而不是 api.jwt.auth - nevets
@nevets,我编辑了我的问题,同时我也编辑了我的导入,但是没有帮助。 - Dennis Zinkovski
@tier1,是的,这是一个源项目目录,所有需要的依赖项都包含在GOPATH/src中。 - Dennis Zinkovski
嗯,恐怕IntelliJ会自动将当前文件夹添加到PATH中,以便找到api.jwt.auth :s 我没有使用IntelliJ,所以无法确认。 :( - nevets
显示剩余5条评论
1个回答

1
你的GOPATH可以有多个目录。如果您真的希望您的backend目录成为您的一些Go库的路径,除了您现有的路径/Users/denis/Programming/Golang,您可以将GOPATH设置为:/Users/denis/Programming/Golang:/Users/denis/Programming/Golang/src/backend。这将导致导入语句在/Users/denis/Programming/Golang/src目录和/Users/denis/Programming/Golang/src/backend/src目录中搜索源文件。
我个人建议将您的api.jwt.auth文件夹移动到/Users/denis/Programming/Golang/src/api.jwt.auth,以保持您的源代码在一个区域内,但是按照上述建议在GOPATH中拥有两个不同的目录也可以。
要更好地了解GOPATH,您可以简单地输入go help gopath。此外,快速入门请参阅此处

非常感谢,使用GOPATH中的两个路径方法对我很有帮助!这样做是否是不好的实践,我应该像您上面提到的那样移动我的源代码吗? - Dennis Zinkovski
我不认为这是不好的做法,只是不太常见。 - John Weldon

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接