最近尝试使用 beego 来初始化一个项目,按照文档来一步步的操作。 由于初次尝试使用golang来构建 这里也记录一下自己在初始化的时候所遇到的问题与解决。 由于也是新手,所以遇到的问题可能比较低级,但是这也作为以后熟练使用框架的一些基础吧

一、安装beego与bee工具

安装工具有两种方法,一种是使用go get 命令,一种是使用go mod 命令,但是两种方法都有一些前置的操作

  1. 设备goproxy, 加快国内的下载速度
  2. $GOPATH/bin 添加到环境变量中

设置goproxy

由于国内的网络环境原因,需要设置代理才可以快速的下载golang的第三方包。

目前使用比较广泛的是goproxy.io与goproxy.cn,goproxy.cn 为七牛云所搭建,设置方法相同,只是路径不同

我本机的go 版本为1.16,13以下的还是升级吧,毕竟目前还看,go mod 应该是未来的主流

1
2
$ go env -w GO111MODULE=on
$ go env -w GOPROXY=https://goproxy.cn,direct

$GOPATH/bin 添加到环境变量PATH 中。

第二步不是必须的,因为要使用bee工具快速生成beego网站的基础目录,所以如果想在任意目录下使用bee工具就需要将bin目录添加到环境变量PATH中。

1
2
export GOPATH=/Users/yangyanxing/go
export PATH=$PATH:$GOPATH/bin

上面的命令为临时变更,想要永久变更,需要修改以下的文件,将上面的代码添加到文件任意一个

1
2
3
4
5
6
7
a. /etc/profile 
b. /etc/paths 
c. ~/.bash_profile 
d. ~/.bash_login 
e. ~/.profile 
f. ~/.bashrc 
e. ~/.zshrc

a和b是系统级别的,建议别修改,如果使用bash 则修改~./bashrc, 如果使用zsh,则修改~/.zshrc

1.1 使用 go get 命令安装beego与bee工具

安装beego

1
go get github.com/beego/beego/v2

安装bee工具, bee工具可以快速初始化一个beego项目,也运行beego项目,并可以热加载

1
go get -u github.com/beego/bee/v2

问题一, 这些包都安装到哪里了?

通过go env GOPATH 来查看系统的GOPATH目录,安装的第三方包被下载到了$GOPATH/pkg/mod 目录下,并且目录结构也是按照包的路径结构。

1.2 使用go mod download 下载第三方包

也可以使用go mod download 命令下载第三方包,这种一般是将别人的项目clone到本地以后,本地先根据go.mod文件里的包信息下载对应的库版本,有点类似于python中的requirements.txt 文件的作用,在python中会创建一个虚拟环境,但是在go中是没有虚拟环境的概念的,所有的第三方包都放在一起,会根据版本号作为区分。

先在一个空白 的目录使用go mod init modtest 命令初始化mod文件, 这里会生成一个go.mod文件

查看它的内容cat go.mod

1
2
3
module modtest

go 1.16

这里可以添加第三方包的依赖

1
2
3
4
5
6
7
module beetest

go 1.16

require github.com/beego/beego/v2 v2.0.1
require github.com/smartystreets/goconvey v1.6.4

这时在go.mod目录下,使用go mod download 命令来下载第三方包。

无论使用go get 还是go mod download 命令,都不会显示下载的进度条,看着挺别扭的。

二、使用bee工具生成beego项目结构

我们使用一个新的目录来生成beego项目,使用bee new beetest 会生成一个新的目录beetest, 这里会生成新的go.mod文件

进到beetest目录

1
2
3
bee new beetest
cd beetest
go mod download

先不用管项目里的目录结构,使用bee run 命令即可启动服务,这里在浏览器中打开http://127.0.0.1:8080 即可看到beego的欢迎页面。

image-20210529170757883

问题二,如果不使用go mod download 则不能使用,为什么?

因为在初始化项目以后,只有go.mod文件,没有go.sum 文件, 该文件会记录一些库的信息,如果没有的话会提示

go: github.com/beego/beego/v2@v2.0.1: missing go.sum entry; to add it:
	go mod download github.com/beego/beego/v2
2021/05/29 17:05:34 ERROR    ▶ 0004 Failed to build the application: go: github.com/beego/beego/v2@v2.0.1: missing go.sum entry; to add it:
	go mod download github.com/beego/beego/v2

所以需要使用go mod download 命令来下载包并且将信息写入到go.sum 文件中。