电商商城定制开发go踩坑——no required module provides package : go.mod file not found in current directory or any parent

背景

电商商城定制开发准备运行下面代码

  1. package main
  2. import (
  3. "github.com/gin-gonic/gin"
  4. )
  5. func main() {
  6. // 电商商城定制开发创建一个默认的路由引擎
  7. r := gin.Default()
  8. // GET:请求方式;/hello:电商商城定制开发请求的路径
  9. // 当客户端以GET方法请求/hello路径时,会执行后面的匿名函数
  10. r.GET("/hello", func(c *gin.Context) {
  11. // c.JSON:返回JSON格式的数据
  12. c.JSON(200, gin.H{
  13. "message": "Hello world!",
  14. })
  15. })
  16. // 启动HTTP服务,默认在0.0.0.0:8080启动服务
  17. r.Run()
  18. }

结果报错:

no required module provides package : go.mod file not found in current directory or any parent directory;

也就是说找不到导入模块的包

尝试1:

go get -u github.com/gin-gonic/gin

没有效果

尝试2:

网上基本都是这个解决方案:执行:go env -w GO111MODULE=auto

但是我的已经打开了,所以排除这个解决方案。

尝试3:我又重新建了个项目,发现另一个运行时报错结果是:

1.go:4:2: no required module provides package github.com/gin-gonic/gin; to add it:
go get github.com/gin-gonic/gin

注意这两个报错的区别,这个提示了 go get github.com/gin-gonic/gin

说明原项目是缺少东西的,我对比了一下发现原项目代码所在的文件夹中缺少go.mod这个文件

通过研究

得到了解决方案

解决方法

在报错的代码文件夹打开终端,运行

go mod init 新模块名字

就可以初始化go.mod,这样再运行

go get -u github.com/gin-gonic/gin

就OK了

总结

  • Go.mod是Golang1.11版本新引入的官方包管理工具用于解决之前没有地方记录依赖包具体版本的问题,方便依赖包的管理。
  • Go.mod其实就是一个Modules,关于Modules的官方定义为:Modules是相关Go包的,是源代码交换和版本控制的单元。go命令直接支持使用Modules,包括记录和解析对其他模块的依赖性。Modules替换旧的基于GOPATH的方法,来指定使用哪些源文件。
  • Modules和传统的GOPATH不同,不需要包含例如src,bin这样的子目录,一个源代码目录甚至是空目录都可以作为Modules,只要其中包含有go.mod文件。

网站建设定制开发 软件系统开发定制 定制软件开发 软件开发定制 定制app开发 app开发定制 app开发定制公司 电商商城定制开发 定制小程序开发 定制开发小程序 客户管理系统开发定制 定制网站 定制开发 crm开发定制 开发公司 小程序开发定制 定制软件 收款定制开发 企业网站定制开发 定制化开发 android系统定制开发 定制小程序开发费用 定制设计 专注app软件定制开发 软件开发定制定制 知名网站建设定制 软件定制开发供应商 应用系统定制开发 软件系统定制开发 企业管理系统定制开发 系统定制开发