首頁  >  文章  >  後端開發  >  如何解決頂層模組和子模組導入的 Go 模組依賴衝突?

如何解決頂層模組和子模組導入的 Go 模組依賴衝突?

Barbara Streisand
Barbara Streisand原創
2024-11-03 22:04:30233瀏覽

How to Resolve Go Module Dependency Conflicts with Top-Level and Sub-module Imports?

解決Go 模組與頂層模組和子模組導入的依賴衝突

當頂級模組和以下之一時,會出現此問題它的子模組分別以不同版本導入,導致依賴衝突。考慮這樣一個場景,您的專案有兩個依賴項:github.com/foo/bar 和 github.com/raz/mataz。執行 go mod download 後,由於存在子模組,會下載兩個不同版本的 github.com/shared/dependency。

檢查下載的模組會發現多個下載版本:

  • ${GOPATH}/pkg/mod/github.com/shared/[email protected]:包含整個儲存庫內容,包括子模組。
  • ${GOPATH}/pkg/mod /github.com/shared/dependency/[email protected]:僅包含 api 子模組。

嘗試匯入 github.com/ 時,此不符會導致不明確的導入錯誤共用/依賴/api。由於兩個目錄中存在版本衝突,go 工具無法確定使用哪個版本。

解決方案:升級依賴版本

此問題的根本原因通常是與衝突依賴項中的 pre-go-modules 版本控制相關。將以下行加入go.mod 檔案中會強制衝突的依賴項使用支援go-module 的版本:

replace (
    github.com/shared/dependency => github.com/shared/dependency v1.2.0
)

這有效地強制對github.com/shared/dependency 的引用使用與go相容的版本模組,解決衝突的依賴問題。值得注意的是,此解決方案有效,因為對共享依賴項的所有參考都被導向到啟用 go-module 的版本。

以上是如何解決頂層模組和子模組導入的 Go 模組依賴衝突?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn