Go mod 使用遇到的问题
1、 cannot load log/mylog: malformed module path "log/mylog": missing dot in first path element
go1.13 mod 要求import 后面的path 第一个元素,符合域名规范,比如code.be.mingbai.com/tools/soa
即使是本项目下的其他包
如果无法使用域名,可以考虑使用replace,但不建议这样做。
eg: replace code.be.mingbai.com/tools/soa => ../../tools/soa
总结起来就是把你的项目放在一个域名目录下,不再是之前那种随意的名字了,这样就解决了这个报错问题。
2、cannot find module for path xxxx
从输出可以看出,在程序 中调用 其他的依赖包,在编译过程就失败了。无法找到 对应的依赖包,
按照传统的$GOPATH
引入包原则,只要在$GOPATH/src
存在相应路径的包,就可以完成编译了。从现在的情形就可以解释$GOPATH
在Go Module
功能开启后,对原有引入包的规则发生的改变。
举个例子,比如现在 xx.com/foo 和 xx.com/hello 二个文件夹,在自己项目中,hello 下的 main.go 中引用 foo 下面的 foo.go 文件,package 是 foo。foo/foo.go 如下:
package foo
import "fmt"
func Tc() {
fmt.Println("foo test")
}
hello/main.go 如下:
package main
import "foo/foo"
func main() {
foo.Tc()
}
此时去执行 hello 下 main.go,go run main.go,就会提示上述错误,找不到 foo,此时 hello 下的go.mod只有一句话,无法找到对应的包,没有 require,需要我们手动添加,xx.om/foo => ../foo
和require xx.com/foo v0.0.0
,然后再去执行 go run 就可以输出结果了。
本作品采用《CC 协议》,转载必须注明作者和本文链接
您好,我遇到您的第一个问题,能具体点讲解如何解决吗?