【解決了一個小問題】golang中引用一個路徑較長的庫,導致goland中出現"module contains a go.mod file, so major version must be compatible: should be v0 or v1, not v2"
阿新 • • 發佈:2020-12-01
在專案中的go.mod檔案中有這樣一句:
require (
github.com/xxx-devops/xx1/sdk/go v2.2.3
)
專案的編譯沒有問題,但是goland中出現如下提示:
go: errors parsing go.mod: D:/source/github/ahfuzhang/go.lib/go.mod:8: require github.com/xxx-devops/xx1/sdk/go: version "v2.2.3" invalid: module contains a go.mod file, so major version must be compatible: should be v0 or v1, not v2
於是我換個寫法:
require (
github.com/xxx-devops/xx1/sdk/go v2.2.3+incompatible
)
錯誤資訊變為:
go list -m: github.com/xxx-devops/xx1/sdk/[email protected]+incompatible: invalid version: +incompatible suffix not allowed: module contains a go.mod file, so semantic import versioning is required
解決的辦法如下:
require ( github.com/xxx-devops/xx1/sdk/go/v2 v2.2.3 )
然後編譯,然後go.mod檔案變成了:
require (
github.com/xxx-devops/xx1/sdk/go v0.0.0-20201126031658-a2b707072c79
github.com/xxx-devops/xx1/sdk/go/v2 v2.2.3
)
然後註釋掉後面一行,搞定。
結論:
1.庫還是要避免太深的路徑
2.為什麼目錄中包含個v2,一定要寫到go.mod裡面去?這裡還沒搞懂