[英]golang can not find package gin in sub directory
我收到以下错误消息:
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)
去环境
GOPATH="/home/ubuntu/goapi"
GOROOT="/usr/local/go"
文件夹结构
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 看起来不错。
还有一些代码:
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 结构
我确实删除了去。 并再次安装它流 Linux 版本https://golang.org/doc/install然后
export GOPATH=$HOME/go
export PATH=$PATH:$GOPATH/bin
然后https://github.com/gin-gonic/gin#use-a-vendor-tool-like-govendor示例代码运行正常。 当我用 user.go 添加控制器文件夹时
import( "github.com/gin-gonic/gin")
完整代码
package controller
import( "github.com/gin-gonic/gin")
func somestring(){
return "hello world"
}
在 main.go 我在上面使用
curl https://raw.githubusercontent.com/gin-gonic/gin/master/examples/basic/main.go > main.go
添加到导入
"./controller"
"fmt"
添加到主函数
user := new(controller.somestring)
fmt.Printf(user)
我知道这对我来说不是一个好的代码,但会再次产生此错误,如下所示:
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)
(这次没有下划线)
没有运气,重新安装去
我能找到路径,但不能找到下划线
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$
如果在项目的根路径中没有启用 go mod,那么你必须启用 go mod 并安装包。
例如,缺少一个名为“/gin-gonic/gin”的包,或者您找不到它。
请在 src 文件夹或与 github.com 文件夹并行运行它。
$ GO111MODULE=on go get -u github.com/gin-gonic/gin@v1.3.0
我希望这有帮助。
从 Go v1.11 开始,您可以使用 go modules 来创建带有 Go src/ 文件夹之外的模块的项目。 为此,您只需在根文件夹中运行go build
命令go build
。
这篇文章解释了这一切: https : //medium.com/mindorks/create-projects-independent-of-gopath-using-go-modules-802260cdfb51
Gl & Hf :D
也许我只是错过了项目文件夹中每个文件夹的这一步。 (很重要)
mkdir -p $GOPATH/src/github.com/myusername/project && cd "$_"
我一直问我的朋友谷歌,答案是:goVendor 非常依赖于 $GOPHATH。 然后我用上面的命令创建控制器文件夹。 所以每个文件夹也是。 没问题 :)
感谢大家的帮助和观看
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.