關於 Go Modules 巢狀引入本地包的問題
Golang 資料夾下 有三個 go 包: 分別建立 blog 包 article 包 和 third 包
blog 包裡引入 article 包的內容:
article 包裡有 go.mod 和 tools.go 檔案 go.mod 內容:
module article
go 1.13
tools.go 內容:
package article
func Hello() string {
return "Hello Article."
}
blog 包裡有 go.mod 和 main.go 檔案 go.mod 內容:
module blog
require github.com/local/article v0.0.0
replace github.com/local/article => ../article
go 1.13
main.go 內容:
package main
import (
"fmt"
"github.com/local/article"
)
func main() {
fmt.Println(article.Hello())
}
現在 go run blog 包下的 main.go 一切正常 輸出:Hello Article.
現在要讓 article 包 引入 本地 third 包
third 包下有 go.mod 和 casual.go 檔案 go.mod 內容:
module third
go 1.13
casual.go 內容:
package third
import "fmt"
func World() {
fmt.Println("Hello third.")
}
修改 article 下的 go.mod 為:
module article
require github.com/local/third v0.0.0
replace github.com/local/third => ../third
go 1.13
修改 tools.go 在 Hello 函式中加入對 third 函式 World 的引入(其實這裡加不加都一樣 只要 article 的 go.mod 里加入了本地包,即使顯示宣告 replace 也沒用):
package article
import "github.com/local/third"
func Hello() string {
third.World()
return "Hello Article."
}
然後這時 再去 blog 包 執行 main.go 會出錯,提示: go: github.com/local/article@v0.0.0 requires github.com/local/third@v0.0.0: reading https://goproxy.io/github.com/local/third/@v/v0.0.0.mod: 404 Not Found 也就是 third 目前忽略了 article 中 go.mod 的 replace github.com/local/third => ../third 宣告,直接去伺服器找 third,我感覺這個很不合理, 但我又不知道問題出在哪,所以很苦惱。 既然 blog 包 引入本地 article 包,而 article 引入本地 third 包 並已經顯示宣告瞭 replace,這個應該一直有效,但我確實找不到有效的方法,所以請大神幫幫我!
而我目前使用的最笨的處理方式是: 再在 blog 包裡 重新把 article 的 go.mod 中的那句(replace github.com/local/third => ../third)在此再宣告一次,這樣操作的話,就一切正常!
module blog
require github.com/local/article v0.0.0
replace github.com/local/article => ../article
go 1.13
也就是說我,以我這種笨方法,現在有個本地 A 包,引入(A 包下的 go.mod 已經顯示宣告 replace 了 B 包的本地路徑 以下同此)了本地 B 包, B 包又引入了本地 C 包(同上),C 包又引入了本地 D 包.......D->E->F->G
那麼現在我要讓 A 包能正常工作,則必須在 A 包的 go.mod 下,把每一個 B,C,D,E,F 下的 go.mod 中的 replace 本地包路徑在這裡都要重新再寫一遍, 我感覺這個肯定不對,所以肯請大神幫我解決一下困擾我很久的問題,本人不勝感激,謝謝!
有人說是 包路徑問題: 我嘗試著把 article 引入本地 third 的包名從上面的:
require github.com/local/third v0.0.0
replace github.com/local/third => ../third
改成:
require github.com/ocean/third v0.0.0
replace github.com/ocean/third => ../third
或 改成:
require github.com.cn/ocean/third v0.0.0
replace github.com.cn/ocean/third => ../third
結果都一樣 還是提示(只不過是把代理伺服器後面的地址給變了,說白了還是 replace 沒起效):go: github.com/local/article@v0.0.0 requires github.com.cn/ocean/third@v0.0.0: reading https://goproxy.io/github.com.cn/ocean/third/@v/v0.0.0.mod: 404 Not Found
- 加微信實戰群請加微信(註明:實戰群):gocnio
相關文章
- Go 之基礎速學 (十四) golang 裡 a 包引入 b 包 b 包引入 a 包問題的解決Golang
- 關於 MySQL 的巢狀事務MySql巢狀
- ScrollView巢狀RecyclerView滑動衝突相關問題View巢狀
- Maven引入本地jar包MavenJAR
- 關於idea部署本地專案的問題Idea
- 巢狀預載入 MorphTo 關聯的一個問題需注意巢狀
- 有關 Android Studio 重複引入包的問題和解決方案Android
- 巢狀ScrollView問題解決思路巢狀View
- GO Modules的理解和遇到的問題解決方法Go
- 關於 go-micro 相關問題Go
- 關於Decorator裝飾器模式巢狀包裝的個人的改進設想模式巢狀
- Springboot 引入本地 jar 包方式Spring BootJAR
- 關於各種揹包問題
- 關於go的最熱門問題合集Go
- Mysql中的巢狀子查詢問題QSBSMySql巢狀
- 關於 CSS modulesCSS
- 關於IDEA中SSM專案Web工程引入pom.xml後仍然找不到包的問題IdeaSSMWebXML
- Java JDK11基於巢狀的訪問控制JavaJDK巢狀
- vue的元件巢狀關係Vue元件巢狀
- IntelliJ IDEA 如何引入本地 jar 包IntelliJIdeaJAR
- react native ScrollView巢狀WebView 互動問題React Native巢狀WebView
- 從原理上說說ScrollView巢狀ListView的問題View巢狀
- Go TCP 粘包問題GoTCP
- 本地引入vue、element-ui引入fonts,icon圖示不生效問題VueUI
- python關於多級包之間的引用問題Python
- ScrollView巢狀LinearLayout佈局不能撐滿全屏的問題View巢狀
- Maven 專案引入本地 jar 包方法MavenJAR
- js中的函式巢狀和閉包JS函式巢狀
- 讀取 jar 包中巢狀的 jar 包內容的方法JAR巢狀
- go modulesGo
- go 閉包捕獲問題Go
- 深度解密Go語言之關於 interface 的10個問題解密Go
- 想問一下關於移動端 APP 抓包的問題APP
- Go module 本地導包方式Go
- Go Modules 命令Go
- 解決 ScrollView 巢狀 RecyclerView 時,慣性滑動失效的問題View巢狀
- 關於this指向的問題
- web前端入門到實戰:HTML元素巢狀問題Web前端HTML巢狀