我收到以下错误消息:

1
2
3
controllers/user.go:4:2: cannot find package"(underscore)/home/ubuntu/goapi/src/github.com/roes/api/vendor/github.com/gin-gonic/gin"
in any of: /usr/local/go/src/(underscore)/home/ubuntu/goapi/src/github.com/roes/api/vendor/github.com/gin-gonic/gin (from $GOROOT)
     /home/ubuntu/goapi/src/_(underscore)/home/ubuntu/goapi/src/github.com/roes/api/vendor/github.com/gin-gonic/gin (from $GOPATH)

进入环境

1
2
GOPATH="/home/ubuntu/goapi"
GOROOT="/usr/local/go"

文件夹结构

1
2
3
4
5
github.com/rose
 api
  main.go // the loading gin is ok here
  controller
   |-user.go //with import ("github.com/gin-gonic/gin" ) : error

go env看起来不错。

更多代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
  package controller

  import (
   "github.com/gin-gonic/gin"
   "net/http"
    //     "github.com/astaxie/beego/orm"
   "../database"
   "../models"
  )

  func init() {
    database.ConnectToDb()
    ORM = database.GetOrmObject()
  }

   //UserController ...
   type UserController struct{}

   func createUser(c *gin.Context) {

示例资源:https://github.com/thearavind/go-gin-pg,此示例没有错。我只是像MVC结构那样

我确实删除了go。
并再次安装流Linux版本
https://golang.org/doc/install
然后

1
2
export GOPATH=$HOME/go
export PATH=$PATH:$GOPATH/bin

然后
https://github.com/gin-gonic/gin#use-a-vendor-tool-like-govendor
示例代码运行正常。
当我用

用user.go添加控制器文件夹时

1
 import("github.com/gin-gonic/gin")

完整代码

1
2
3
4
5
  package controller
  import("github.com/gin-gonic/gin")
  func somestring(){
    return"hello world"
  }

在main.go中的

我在上面使用

1
   curl https://raw.githubusercontent.com/gin-gonic/gin/master/examples/basic/main.go > main.go

添加到导入

1
2
   "./controller"
   "fmt"

添加到主要功能

1
2
        user := new(controller.somestring)
        fmt.Printf(user)

我知道这对我来说不是一个好代码,但是会再次产生此错误,如下所示:

1
2
3
 controller/user.go:4:2: cannot find package"github.com/gin-gonic/gin" in any of:
/usr/local/go/src/github.com/gin-gonic/gin (from $GOROOT)
/home/ubuntu/go/src/github.com/gin-gonic/gin (from $GOPATH)

(这次没有下划线)

没有运气,请重新安装go

我能够找到路径,但不能找到下划线

1
2
 08:56:35 ~/go/src/github.com/jerry/core$ cd /home/ubuntu/go/src/github.com/jerry/core/vendor/github.com/gin-gonic/
 08:56:45 ~/go/src/github.com/jerry/core/vendor/github.com/gin-gonic$
  • 导入路径为" github.com/gin-gonic/gin ",而不是" / home / ubuntu / goapi / src / github.com / roes / api / vendor / github.co ?? m / gin-gonic /杜松子酒"
  • 是的,我不明白这部分。据我了解,它应该调用全局安装的程序包,并且我确实有" / home / ubuntu / goapi / src / github.com / roes / api / vendor / github.co ?? m / gin-gonic / gin "(前面的下划线)
  • 在文件夹结构中,您有github.com/rose。在错误消息中,您有github.com/roes。为什么?
  • 我不知道。我相信它会查找所有软件包,而不是杜松子酒。有趣的是我可以在main.go tho中加载杜松子酒包。
  • 仅当您的代码显示import"_/home/ubuntu/goapi/src/github.com/roes/api/vendor/github.c??om/gin-gonic/gin"时才可能出现该错误消息,这是错误的。否则,不会进入$GOPATH/src/_home/ubuntu/...
  • 有谁知道为什么会有下划线?请。我可以在正确的路径中找到杜松子酒,和上面的一样,只是没有下划线

如果未在项目的根路径中启用go mod,则必须启用go mod并安装软件包。

例如,缺少一个名为" / gin-gonic / gin "的软件包,或者您找不到它。

请在src文件夹中或与github.com文件夹并行运行。

1
$ GO111MODULE=on go get -u github.com/gin-gonic/gin@v1.3.0
  • 我假设您的$ GOPATH是Users / YourUserName / go
  • 我希望这会有所帮助。

    也许我只是错过了项目文件夹中每个文件夹的这一步。
    (非常重要)

    1
      mkdir -p $GOPATH/src/github.com/myusername/project && cd"$_"

    我一直问我的朋友Google,答案是:goVendor非常依赖$ GOPHATH。
    然后我用上述命令创建控制器文件夹。所以每个文件夹也一样。没问题:)

    感谢大家的帮助和查看

    • 是的,与供应商路径无关,问题仍然存在