首頁 >後端開發 >Golang >為什麼 Go Modules 會拋出「沒有版本的替換模組必須是目錄路徑(rooted 或以...開頭)」錯誤?

為什麼 Go Modules 會拋出「沒有版本的替換模組必須是目錄路徑(rooted 或以...開頭)」錯誤?

Susan Sarandon
Susan Sarandon原創
2024-11-05 17:56:021086瀏覽

Why does Go Modules throw the

go 模組- 「沒有版本的替換模組必須是目錄路徑(根目錄或以...開頭」)Glitch

在上下文中在go 模組中,replace 指令可讓您用本機路徑取代模組。但是,該指令有一個特定的要求:路徑必須是根路徑(以“/”開頭)或相對於模組的根路徑。

理解問題

在提供的場景中,嘗試在go 模組(goweb) 中使用本地套件(mypack) 會導致錯誤:「沒有版本的替換模組必須是目錄路徑(根目錄)或以.) 開頭” 此錯誤表示為替換指令指定的路徑不符合所需的格式。

解決問題

要解決此問題,確保replace指令的路徑滿足以下條件:

  • 它必須是絕對路徑(以"/")。
  • 如果是相對路徑,則必須是相對於模組根目錄(包含go.mod檔案的目錄)。

解決方法

對於goweb 模組,由於mypack 是其根目錄的同級目錄,因此正確的替換指令是:

此外,為了使此替換有效工作,還必須透過在其目錄中添加go.mod 檔案將mypack 轉換為go 模組。這可以透過在 mypack 目錄中執行命令 go mod init mypack 來完成。

其他注意事項

如果應用程式和它使用的套件是同一個套件的一部分go 模組,則無需將其添加到 go.mod 中。只需引用程式碼中的套件就足夠了。

資源

  • [取代Go 模組中的指令](https://go.dev/ref /mod#hdr-Replace_Directives)
  • [如何使用「GOPATH」以外的模組在另一個模組中? ](https://stackoverflow.com/questions/52576751/how-to-use-a-module-that-is-outside-of-gopath-in-another-module)

以上是為什麼 Go Modules 會拋出「沒有版本的替換模組必須是目錄路徑(rooted 或以...開頭)」錯誤?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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