我用 Golang 的 Web 框架 Iris 寫項目時,發現下載依賴老是失敗原因是被牆了(可以參考上一篇 https://www.cnblogs.com/ser0632/p/11374790.html)。
還有一個問題是:當你想把寫好的代碼發給同事看時,你不可能讓你同事再次下載依賴包,而是將依賴包打包到項目的 vendor 目錄下一塊發給你的同事。
下面就講解處理辦法。
Go 的 module 很多功能,我這里只講我工作中用到的情況。
我的工作文件夾是 D:\GOPROJECT 目錄。
1.在 D:\GOPROJECT 目錄中創建一個文件夾 MyTest 我也稱 MyTest 為我的項目。
2.在 MyTest 目錄下創建 mian.go 文件,文件內容如下:
package main
import (
"github.com/kataras/iris"
"github.com/kataras/iris/middleware/logger"
"github.com/kataras/iris/middleware/recover"
)
func main() {
app := iris.New()
app.Logger().SetLevel("debug")
app.Use(recover.New())
app.Use(logger.New())
app.Get("/", func (ctx iris.Context){
ctx.HTML("Hello vendor")
})
app.Run(iris.Addr(":8080"), iris.WithoutServerError(iris.ErrServerClosed))
}
3.打開CMD命令框,進入到 D:\GOPROJECT\MyTest 目錄中

4.在命令框中執行以下兩條命令
set GO111MODULE=on
set GOPROXY=https://goproxy.io

注意:如果不想每次打開命令框輸入以上兩條代碼,可把這兩條命令寫入到環境變量中,如下圖:

5.在命令框中執行 go mod init MyTest

init 后面的名稱可自定義,為了對應項目的名稱,所以我也用了 MyTest。
執行完后會發現項目路徑下多了一個 go.mod 的文件

6.在CMD命令框中執行 go build main.go

執行完后(如果你的代碼沒有語法錯誤),你會發現MyTest 目錄下又多了兩個文件 go.sum 和 main.exe 文件。
7.在CMD命令框執行 go mod vendor
這樣就會把所有的依賴包,都打包到項目下的 vendor 文件夾中(注意 CMD的當前目錄一定要在項目中)。

此時你的項目 MyTest 會多一個 vendor 文件夾。

所有的依賴包都在 vendor 文件夾中

完。
