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 協議》,轉載必須註明作者和本文連結