【解決了一個小問題】golang中引用一個路徑較長的庫,導致goland中出現"module contains a go.mod file, so major version must be compatible: should be v0 or v1, not v2"


在項目中的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/go@v2.2.3+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里面去?這里還沒搞懂


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM