go - 为什么我的示例 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")
}
解决方案
该示例似乎显示了多个文件的代码,其中一些文件位于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
),因此所有依赖项/安装都可以无缝处理。
推荐阅读
- javascript - Javascript将整数应用于其他值
- google-bigquery - BigQuery 错误:无法返回相对于 Unix 纪元的 6328502092800000000 微秒的无效时间戳值
- node.js - 在将数据库 ID 与用户请求的 ID 进行比较时,无法读取未定义的属性“forEach”
- c# - 在 C# 中运行 Powershell 脚本以启用键盘过滤器
- xml - 如何使用 go 检查 XML 文件中是否存在标签?
- javascript - 从数组中获取第二个索引之后的所有索引
- excel - 如何检查一行中的单元格是否等于其他工作表中的另一行
- ruby - 通过 Bundler 使用 Ubuntu 的 Systemd 执行 Rake 任务,退出状态 127
- javascript - 可以在javascript中复制项目的错误按钮:不显示值
- excel - 将粘贴 VBA 范围从一个工作表复制到另一个工作表循环并转置数据