Vendor


vendor踩坑筆記:

接過公司里面X平台golang部分的后端后,需要新添加一個業務功能,美滋滋~ 拿過項目一頓寫之后后遇到事了。

報錯的描述如下:

image-20200604202529966

報錯的大意說:方法的入參類型不匹配,我們不能把 Assignment2/vendor/github.com/... 當作github.com/... 類型來使用。

出現的這個錯誤的原因就項目中使用的 beego的Controller使用了vendor進行管理,於是在這個包前多了個前綴 項目名/vendor/xxx。但是呢,這個函數需要的是純粹的beego的controller,加上這個前綴之后反到是不認識了。於是就出現了上面的錯誤。

查閱資料后了解:vendor是在GOPATH的管理之下的,大白話說:如果我們的項目在GOPATH目錄下,那么項目中需要的依賴信息優先從vendor中獲取。你看,我上面的報錯就屬於這個情況,我以為我在使用 github/astaxie/beego/controller , 而實際優先導入了 項目名/vendor/github/astaxie/beego/controller

當時我是如何解決的呢?

不是說優先導入vendor中的代碼嗎?好,我把你刪除,你不就使用我本地的依賴了?(純潔的微笑~)

事實證明,確實如此,刪除vendor中的依賴后,一切歸於平靜,繼續開發~

但是我提交代碼讓組里的大佬CR時,大佬發現vendor被我改了~~~,這才知道,項目之所以使用vendor管理項目就是為了讓項目中的依賴可以跟着項目遷移,這樣部署項目時不再去很多不同的地方拉取依賴,因為依賴都在項目里面。

所以刪除vendor中的依賴並不是萬全之策,可以刪掉現在的vendor,重新用vendor初始化一下,讓項目中的依賴重新讓vendor管理。

 # 下載govendor
 go get -u -v github.com/kardianos/govendor
 
 # 在當前目錄中執行如下命令進行初始化,將依賴加入vendor統一管理
 govendor init
 govendor add +e


免責聲明!

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



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