首页 > 解决方案 > 为什么我的示例 gin 应用程序没有抛出 goapi/mappings not found 的错误?

问题描述

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

我一步步跟着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")
    }

标签: gogo-gin

解决方案


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


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

我个人建议不要与那个例子抗争,而是看官方的例子 repo——它是一个合适的 Go 模块,并且有构建的说明

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

$ 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),因此所有依赖项/安装都可以无缝处理。


推荐阅读