最近需要用beego編寫程序,這里是環(huán)境搭建的踩坑記錄偶宫。想看解決方案的直接滑到最下面即可非迹。
省流一句話描述:遠離GOPATH,否則會變得不幸纯趋,擁抱go mod憎兽,擁抱快樂!
環(huán)境
- go 1.12
- Ubuntu 20.04
踩坑記錄
本次目的是安裝beego和bee吵冒,然后啟動一個簡單的http服務(wù)
在嘗試了無數(shù)次go get github.com/astaxie/beego
和go get -u github.com/beego/bee
后纯命,收獲了各種百度不到的錯誤,如下所示:
錯誤1:
dubito@ubuntu:~$ go get github.com/astaxie/beego
# github.com/prometheus/procfs/internal/util
golib/src/github.com/prometheus/procfs/internal/util/parse.go:69:15: undefined: os.ReadFile
golib/src/github.com/prometheus/procfs/internal/util/parse.go:78:15: undefined: os.ReadFile
golib/src/github.com/prometheus/procfs/internal/util/readfile.go:36:9: undefined: io.ReadAll
# github.com/prometheus/common/expfmt
golib/src/github.com/prometheus/common/expfmt/text_create.go:46:27: undefined: io.Discard
錯誤2:執(zhí)行完命令控制臺無任何輸出
錯誤3:
dubito@ubuntu:~$ go get -u github.com/beego/bee
package github.com/beego/bee: cannot find package "github.com/beego/bee" in any of:
/usr/local/go/src/github.com/beego/bee (from $GOROOT)
/home/dubito/golib/src/github.com/beego/bee (from $GOPATH)
在嘗試通過export GOPROXY=https://goproxy.io
設(shè)置GOPROXY后依然如此痹栖,嘗試用wireshark抓了下包亿汞,發(fā)現(xiàn)并沒有走設(shè)置的代理。
在網(wǎng)上百度了一圈结耀,解決的方法嘗試了個遍也沒用留夜,還看到有人說直接換go 1.13問題解決,不過很明顯咱不能換環(huán)境图甜,于是痛定思痛碍粥,決定換go mod模式。
通過命令行export GO111MODULE=on
打開go mod模式黑毅,然后再次運行命令go get github.com/astaxie/beego
嚼摩,收獲了不一樣的bug(控制臺輸出太長,這里截取一部分關(guān)鍵信息):
dubito@ubuntu:~$ go get github.com/astaxie/beego
go: finding github.com/cloudflare/golz4 latest
.......
go get: upgrading github.com/alicebob/miniredis@v2.5.0+incompatible: unexpected status (https://goproxy.io/github.com/alicebob/miniredis/@v/list): 404 Not Found
go: finding google.golang.org/genproto latest
......
go: finding github.com/cncf/udpa/go latest
go get: upgrading gopkg.in/fsnotify.v1@v1.4.7: unexpected status (https://goproxy.io/gopkg.in/fsnotify.v1/@v/list): 404 Not Found
go: finding github.com/pkg/diff latest
......
go: finding github.com/ajstarks/deck latest
go get: error loading module requirements
可以看到,歷經(jīng)千辛萬苦枕面,最終拋出了一個go get: error loading module requirements
的error愿卒,期間還夾雜了各種404,不過萬幸的是這個請求終于走我們設(shè)置的代理了潮秘。
于是決定再換個方法琼开,也是最終成功解決問題的方案。
成功方案
首先通過命令行export GO111MODULE=on
打開go mod模式枕荞,并通過export GOPROXY=https://goproxy.io
設(shè)置GOPROXY柜候。
隨意找個地方,執(zhí)行如下命令初始化go mod:
mkdir test
cd test
go mod init test
然后就可以看到生成了一個go.mod
文件:
dubito@ubuntu:~/test$ ls
go.mod
然后新建文件server.go
躏精,復(fù)制粘貼以下內(nèi)容:
package main
import "github.com/astaxie/beego"
func main() {
beego.Run()
}
然后在當(dāng)前目錄執(zhí)行命令運行文件:
go run server.go
就可以看到beego自動下載渣刷,程序運行成功,并成功運行了http服務(wù):
所以其他項目同理矗烛,只需要使用go mod模式直接運行即可辅柴,不需要額外安裝依賴。