百度了一些网友的解决方法,已经忘记了哪些网址,在此统一感谢了。最后结合自己实际情况,总结出一些问题及解决方法,记录备忘并与大家共享。
环境:
win10-64位
mingw-64位(必须是64位的mingw)
go-win-1.14(必须先有一个,下载地址:https://studygolang.com/dl)
源码安装mingw-64位(安装新版的go需要用):
下载地址:
收费的快的:https://download.csdn.net/download/sizaif/10728613
或官方免费的慢的:
https://git.code.sf.net/p/mingw-w64/mingw-w64 mingw-w64-mingw-w64
下载后解压到一个文件夹mingw64下,将mingw64文件夹复制到c盘一个选定目录下(具体目录自己选即可),然后将mingw的执行路径(比如c:\mingw64\bin)加入PATH环境变量中。
下载源码并安装go1.57:
git下载go的最新源码,命令行切换到准备好的go源码下载文件夹,并运行(需要有一个git账号,如果没有可以注册一个):
git clone https://github.com/golang/go.git
下载完后,进入go/src目录,并运行all.bat,接下来会编译go源码,需要很久,等待其完成。
下载安装iris12.1:
命令行运行:
go get -v -u github.com/kataras/iris
我的做法是:
- 以管理员权限打开命令行;
- 切换到GOPATH(windows系统变量,可手动设置,是写代码的工作目录)目录下;
- 执行 go get -v -u github.com/kataras/iris。需要很久,等待完成。
测试iris是否可用
写一个程序:
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") // Optionally, add two built'n handlers // that can recover from any http-relative panics // and log the requests to the terminal. app.Use(recover.New()) app.Use(logger.New())
// Method: GET // Resource: http://localhost:8080 app.Handle("GET", "/", func(ctx iris.Context) { ctx.HTML("<h1>Welcome</h1>") })
// same as app.Handle("GET", "/ping", [...]) // Method: GET // Resource: http://localhost:8080/ping app.Get("/ping", func(ctx iris.Context) { ctx.WriteString("pong") })
// Method: GET // Resource: http://localhost:8080/hello app.Get("/hello", func(ctx iris.Context) { ctx.JSON(iris.Map{"message": "Hello Iris!"}) })
// http://localhost:8080 // http://localhost:8080/ping // http://localhost:8080/hello app.Run(iris.Addr(":8080"), iris.WithoutServerError(iris.ErrServerClosed))}
编译时发现各种包(好像二十几个)找不到,一一从github上找到源码,并下载到GOPATH目录下src里面的指定位置(编译报警所指出的目录位置),有些下载后需要自己小小改一下名字,使之与错误指示的要求一致,比如text/language包找不到,此时下载一个go语言的text包,gorrila\css\scanner包找不到,此时下载一个gorrila包,等等。
最后问题都解决了,只剩了一个至今还没解决,知道答案的同学希望能留言告诉我,感激不尽:
编译程序报错:
src\github.com\kataras\iris\view\pug.go:30:7: tmpl.ReadFunc undefined (type *jade.Tree has no field or method ReadFunc)
好像是说jade包中找不到ReadFunc函数或者节点。这个确实没有,但是我的jade包是下载的最新的,实在不知道什么原因。。。
补充:
后来我想了想,应该是iris太新了,它对应的jade版本还没有发出来,或者发出来了,我没有找到,反正git上没有找到,所以决定将iris降低一个版本,降到v11,然后再补上缺的几个包,这次运行程序ok了。
如果有小伙伴找到了iris-v12对应的jade包记得留言告诉我哦,先谢啦。
祝大家好运!