【问题标题】:why doesn't my example gin app throw an error that goapi/mappings not found?为什么我的示例 gin 应用程序没有抛出 goapi/mappings not found 的错误?
【发布时间】:2020-08-12 05:44:44
【问题描述】:

我正在学习 Go 和 go-gin。我正在尝试从Gin Go TODO tutoral 的教程中获得一个简单的待办事项应用程序。

我一步一步跟着tut,在根目录下mod init,执行的时候安装gin,bur

  go build main.go

我收到以下错误。

  main.go:3:2: package goapi/mappings is not in GOROOT 
  (/usr/local/go/src/goapi/mappings)

这里是 main.go

    package main
    import (
        "goapi/mappings"
        _ "github.com/go-sql-driver/mysql"
    )
    func main() {
        mappings.CreateUrlMappings()
        // Listen and server on 0.0.0.0:8080
        mappings.Router.Run(":8080")
    }

【问题讨论】:

    标签: go go-gin


    【解决方案1】:

    该示例似乎显示了多个文件的代码,其中一些位于package mappings。您应该在一个目录中重新创建整个示例(多个文件)并运行go build。完整来源似乎在这里:https://github.com/eccosuprastyo/go/tree/master/gin-login


    你说你做了go mod init,但不幸的是这个例子没有使用模块,并且似乎假设这个例子在目录goapi中。所以你可能需要相应地设置你的GOPATH

    我个人建议不要使用该示例,而是查看 official examples repo - 它是一个正确的 Go 模块,并且具有 instructions for building

    例如,如果我克隆官方示例并运行基本示例:

    $ git clone git@github.com:gin-gonic/examples.git
    $ cd examples
    $ go run basic/main.go
    ...
    ... // logging
    ...
    

    在单独的终端中:

    $ curl localhost:8080/ping
    pong
    

    在不到一分钟的时间内开箱即用。官方 Gin 示例使用模块(有一个 go.mod),因此所有依赖项/安装都可以无缝处理。

    【讨论】:

    • 我克隆了项目,这就是现在找不到提供包 github.com/go-sql-driver/mysql 的模块的结果:工作目录不是模块 main.go:4:2 的一部分: 包 goapi/mappings 不在 GOROOT (/usr/local/go/src/goapi/mappings)
    • @uberdave:我建议您从一个更简单的 official Gin 示例开始,然后从那里开始工作。否则,请询问该博客文章的作者他们如何运行他们的代码。
    • 作者没有在她的网站上发布我的问题,所以我在github上发布了这个问题。我会按照你的建议去做,看看官方的例子。
    • @uberdave:添加了更多关于克隆/运行官方示例的说明
    猜你喜欢
    • 1970-01-01
    • 2021-02-23
    • 2014-06-05
    • 2022-06-16
    • 2020-02-14
    • 1970-01-01
    • 2018-12-29
    • 2012-09-05
    • 2021-01-02
    相关资源
    最近更新 更多