Исправление ошибки при запуске сервера на языке GO
Потребовалось поднять сервер который при обращении к нему захватывают запросы к некоторым портам, для этого решил использовать проект на гит-хабе(https://github.com/ArturSS7/TukTuk), но при компиляции у меня возникла ошибка с 2 модулями backend.go и login.go. В первом у ругается на создание сессии
domain = Domain
e := echo.New()
//pass db pointer to echo handler
t := &Template{
templates: template.Must(template.ParseGlob("frontend/templates/*")),
}
secret := []byte(RandStringBytes(20))
e.AutoTLSManager.Cache = autocert.DirCache("/var/www/.cache")
e.Use(session.Middleware(sessions.NewCookieStore(secret))) // ВОТ ТУТ ОШИБКА
e.Renderer = t
e.Use(func(h echo.HandlerFunc) echo.HandlerFunc {
return func(c echo.Context) error {
cc := &database.DBContext{Context: c, Db: db}
return h(cc)
}
})
Во втором же файле компилятор ругается на переменные c
в отрывке
sess, _ := session.Get("session", c) // ТУТ
sess.Values["username"] = login
sess.Options = &sessions.Options{
Path: "/",
}
sess.Values["username"] = login
return sess
}
func loginRequired(next echo.HandlerFunc) echo.HandlerFunc {
return func(c echo.Context) error {
if login := getLoginFromSession(c); login == "" {
return c.Redirect(http.StatusFound, "/login")
}
return next(c)
}
}
func getLoginFromSession(c echo.Context) string {
sess, _ := session.Get("session", c) // ТУТ
login, exists := sess.Values["username"]
if !exists {
return ""
}
return login.(string)
}
Сам компилятор говорит что нужно обновить библиотеку github.com/labstack/echo на github.com/labstack/echo/v4, но в данном случае всё ломается.
Текст ошибки
backend\backend.go:55:8: cannot use session.Middleware(sessions.NewCookieStore([]byte("secret"))) (value of type "github.com/labstack/echo/v4".MiddlewareFunc) as type "github.com/labstack/echo".MiddlewareFunc in argument to e.Use
backend\login.go:42:36: cannot use c (variable of type "github.com/labstack/echo".Context) as type "github.com/labstack/echo/v4".Context in argument to session.Get:
"github.com/labstack/echo".Context does not implement "github.com/labstack/echo/v4".Context (wrong type for Echo method)
have Echo() *"github.com/labstack/echo".Echo
want Echo() *"github.com/labstack/echo/v4".Echo
backend\login.go:61:36: cannot use c (variable of type "github.com/labstack/echo".Context) as type "github.com/labstack/echo/v4".Context in argument to session.Get:
"github.com/labstack/echo".Context does not implement "github.com/labstack/echo/v4".Context (wrong type for Echo method)
have Echo() *"github.com/labstack/echo".Echo
want Echo() *"github.com/labstack/echo/v4".Echo