Go 1.12安装beego问题解决

最近需要用beego编写程序,这里是环境搭建的踩坑记录。想看解决方案的直接滑到最下面即可。

省流一句话描述:远离GOPATH,否则会变得不幸,拥抱go mod,拥抱快乐!

环境

  • go 1.12
  • Ubuntu 20.04

踩坑记录

本次目的是安装beego和bee,然后启动一个简单的http服务

在尝试了无数次go get github.com/astaxie/beegogo 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:执行完命令控制台无任何输出
错误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设置GOPROXY后依然如此,尝试用wireshark抓了下包,发现并没有走设置的代理。

在网上百度了一圈,解决的方法尝试了个遍也没用,还看到有人说直接换go 1.13问题解决,不过很明显咱不能换环境,于是痛定思痛,决定换go mod模式。

通过命令行export GO111MODULE=on打开go mod模式,然后再次运行命令go get github.com/astaxie/beego,收获了不一样的bug(控制台输出太长,这里截取一部分关键信息):

dubito@ubuntu:~$ go get github.com/astaxie/beego
go: finding github.com/cloudflare/golz4 latest
.......
go get: upgrading github.com/alicebob/[email protected]+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/[email protected]: 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

可以看到,历经千辛万苦,最终抛出了一个go get: error loading module requirements的error,期间还夹杂了各种404,不过万幸的是这个请求终于走我们设置的代理了。

于是决定再换个方法,也是最终成功解决问题的方案。

成功方案

首先通过命令行export GO111MODULE=on打开go mod模式,并通过export GOPROXY=https://goproxy.io设置GOPROXY。

随意找个地方,执行如下命令初始化go mod:

mkdir test
cd test
go mod init test

然后就可以看到生成了一个go.mod文件:

dubito@ubuntu:~/test$ ls
go.mod

然后新建文件server.go,复制粘贴以下内容:

package main

import "github.com/astaxie/beego"

func main() {
   beego.Run()
}

然后在当前目录执行命令运行文件:

go run server.go

就可以看到beego自动下载,程序运行成功,并成功运行了http服务:


beego安装成功

所以其他项目同理,只需要使用go mod模式直接运行即可,不需要额外安装依赖。

你可能感兴趣的:(Go 1.12安装beego问题解决)