zoukankan      html  css  js  c++  java
  • package main: malformed module path "main": missing dot in first path elemen 报错的解决

    如果想在你的模块如果想引入你本地其他地方的模块,可以尝试通过 replace 指定目录,而且前提是你的 article 也得 go 的一个模块,而不是按 gopath 下的某个包来引入。

    我简答举个例子吧,比如现在有两个项目,分别是 blog 和 article,结果如下:

    ├─article
    │      article.go
    │      go.mod
    │
    ├─blog
    │      go.mod
    │      main.go

    blog 是应用的入口,main 所在位置,而 article 可以理解为你写的一个公共的库,其中提供了一个函数 Hello()。现在,要在 blog 中调用 article 中的 Hello() 函数。

    article 模块中的 go.mod 内容如下:

    module article
    
    go 1.13

    article.go 内容如下:

    package article
    
    func Hello() string {
            return "Hello"
    }

    blog 模块中的 go.mod 内容如下:

    go 1.13
    
    require github.com/article v0.0.0-incompatible
    
    replace github.com/article => ../article

    此处的 replace 稍微介绍下,之所以要是 github.com/article 的格式,是因为在 go1.13 中, go module 名称规范要求路径的第一部分必须满足域名规范,否则可能汇报类似 malformed module path "article": missing dot in first path element 这样的错误。当然,在 go1.12 不会有报这个错误。建议的话,如果是公司内部使用,可以替换成公司内部域名。

    replace 的第二个参数指定了不从远程获取,而是本地某个路径下的模块替换 github.com/article。

    main.go 的内容如下:

    package main
    
    import (
            "fmt"
    
            "github.com/article"
    )
    
    func main() {
            fmt.Println("Hello")
            fmt.Println(article.Hello())
    }

    此时,在 blog 执行 go run main.go 是可以成功运行的。

  • 相关阅读:
    每天一个linux命令(1):man命令
    安卓名词积累
    每天一个Linux命令:目录
    ubuntu下Python的安装和使用
    嵌入式基础知识(1):存储
    2月份学习笔记
    AndroidStudio 中的坑Error:(1, 0) Plugin is too old, please update to a more recent version, or set ANDROID_DAILY_OVERRID
    AndroidStudio开发出现Warning:Gradle version 2.10 is required. Current version is 2.8. If u
    Git 问题
    判断年 月的值
  • 原文地址:https://www.cnblogs.com/lijiejoy/p/12341278.html
Copyright © 2011-2022 走看看