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 是可以成功运行的。
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步