當我運行go mod tidy幾個包時顯示錯誤
> go mod tidy
github.com/myrepo/myproj imports
go.k6.io/k6 imports
go.k6.io/k6/cmd imports
github.com/fatih/color loaded from github.com/fatih/color@v1.12.0,
but go 1.16 would select v1.13.0
To upgrade to the versions selected by go 1.16:
go mod tidy -go=1.16 && go mod tidy -go=1.17
If reproducibility with go 1.16 is not needed:
go mod tidy -compat=1.17
For other options, see:
https://golang.org/doc/modules/pruning
我已經安裝了 1.17.9。錯誤的含義是什么,為什么會觸發它?
uj5u.com熱心網友回復:
此錯誤與Go 1.17 中引入的模塊圖修剪有關。
在 Go 1.16 中,用于最小版本選擇的模塊圖過去包含完整的模塊圖,而在 1.17 中,該圖僅包括傳遞依賴(有一些例外,請參閱上面的鏈接)。
現在要了解觸發錯誤的原因,您可能需要查看Go 1.17 發行說明:
默認情況下,
go mod tidy驗證與主模塊相關的依賴項的選定版本是否與之前的 Go 版本使用的版本相同(Go 1.16 用于指定 go 1.17 的模塊)[...]
因此,當您運行時go mod tidy,它會報告 Go 1.16 “將選擇”傳遞依賴 ( github.com/fatih/color) 的版本,該版本與 Go 1.17 的修剪圖將選擇的版本不同。
這與構建可重復性有關,因為go.sum包含 中指定的當前 Go 版本go.mod 和前一個版本的校驗和。在 Go 1.17 和 Go 1.16 的情況下,模塊圖可以有效地改變,go.sum這將是不一致的。
錯誤訊息建議進行兩個修復。
go mod tidy -go=1.16 && go mod tidy -go=1.17— 這會選擇依賴版本為 Go 1.16,然后選擇為 Go 1.17go mod tidy -compat=1.17— 這只是洗掉了 Go 1.16 校驗和(因此提示“不需要 go 1.16 的可重復性”)。
升級到 Go 1.18 后,該錯誤不會再出現,因為模塊圖的加載方式與 Go 1.17 相同。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/464596.html
