578 文字
3 分
【Golang】Echo v4をインストールする
2020-02-24
2020-03-25

Go言語のWebフレームワーク、Echoを使ってみようと思ったのですが、導入に少しはまってしまったので対応メモです。なお環境は

  • Ubuntu 18.04 LTS (WLS)
  • Golang 1.13.4

となっています。

問題#

Echoをインストールします。このGithubのREADMEのInstallationに従ってインストールしようとしてみます。

go getしようとするとこんなエラーが表示されてしまいました。

Terminal window
$ go get github.com/labstack/echo/v4
package github.com/labstack/echo/v4: cannot find package "github.com/labstack/echo/v4" in any of:
/usr/local/go/src/github.com/labstack/echo/v4 (from $GOROOT)
/home/username/go/src/github.com/labstack/echo/v4 (from $GOPATH)

READMEじゃなくてこちらのQuick Startに従って、

以下のように実行すると問題なく動きましたが、この書き方だと最新のv4じゃなくてv3がインストールされるみたいです。

Terminal window
$ go get -u github.com/labstack/echo/...

解決策#

$GOPATHじゃなくてGo Modulesの仕組みを使用するとうまくv4をインストールできるようです。Go ModulesはGo言語 1.11から導入されたみたいなので、このバージョン以上のGo言語が必要になるっぽいです。

なので、まずは$GOPATHじゃなくてGo Modulesを使用するように設定します。

Terminal window
$ export GO111MODULE=on

そしてgo mod initのコマンドを叩きます。example.comgolang_echo_sampleの部分は好きなように変えてください。golang_echo_sampleの部分がビルドしたときの実行ファイルのデフォルトの名前になります。

Terminal window
$ go mod init example.com/golang_echo_sample

あとはEchoをimportしたソースコードを置いて、go buildを叩けば自動的にEchoのversion 4をダウンロードして使用してくれます。今回はREADMEにあるHelloWorldのサンプルコードを使用します。

package main
import (
"net/http"
"github.com/labstack/echo/v4" // <- Echo v4をimportしている
"github.com/labstack/echo/v4/middleware"
)
func main() {
// Echo instance
e := echo.New()
// Middleware
e.Use(middleware.Logger())
e.Use(middleware.Recover())
// Routes
e.GET("/", hello)
// Start server
e.Logger.Fatal(e.Start(":1323"))
}
// Handler
func hello(c echo.Context) error {
return c.String(http.StatusOK, "Hello, World!")
}

これでbuildすると、自動的に必要な依存関係をダウンロードしてくれます。

Terminal window
$ go build

実行してみます。

Terminal window
$ ./golang_echo_sample

もう一つターミナルを起動させて、curlで動作確認してみます。

Terminal window
$ curl "http://localhost:1323"
Hello, World!

無事動きました。初めてGo Modules使ってみたけど楽ですねこれ。

参考: