Go mod 使用遇到的问题

1、 cannot load log/mylog: malformed module path "log/mylog": missing dot in first path element

  1. go1.13 mod 要求import 后面的path 第一个元素,符合域名规范,比如code.be.mingbai.com/tools/soa

  2. 即使是本项目下的其他包

  3. 如果无法使用域名,可以考虑使用replace,但不建议这样做。

  4. eg: replace code.be.mingbai.com/tools/soa => ../../tools/soa

总结起来就是把你的项目放在一个域名目录下,不再是之前那种随意的名字了,这样就解决了这个报错问题。

2、cannot find module for path xxxx

从输出可以看出,在程序 中调用 其他的依赖包,在编译过程就失败了。无法找到 对应的依赖包,

按照传统的$GOPATH引入包原则,只要在$GOPATH/src存在相应路径的包,就可以完成编译了。从现在的情形就可以解释$GOPATHGo 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 => ../foorequire xx.com/foo v0.0.0,然后再去执行 go run 就可以输出结果了。

本作品采用《CC 协议》,转载必须注明作者和本文链接
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

请勿发布不友善或者负能量的内容。与人为善,比聪明更重要!