0
0

writefreelyのセットアップでエラーが出た時の解決法

Posted at

この記事の目的

writefreelyのセットアップ方法はドキュメントに記載されていますが、手順通りに進めるとエラーが出ました。この記事ではエラーの解決方法について記載します。

エラーの内容

Quick startに沿ってgo getコマンドを走らせると以下のエラーが発生します。

> go get -d github.com/writefreely/writefreely/cmd/writefreely

go: go.mod file not found in current directory or any parent directory.
	'go get' is no longer supported outside a module.
	To build and install a command, use 'go install' with a version,
	like 'go install example.com/cmd@latest'
	For more information, see https://golang.org/doc/go-get-install-deprecation
	or run 'go help get' or 'go help install'.

エラーの原因

比較的新しいGoのバージョンを使っていると、$GOPATHではなく新しいGo Moduleを使った方法で依存管理を行います。GO111MODULELEという設定で$GOPATHかGo Moduleを選択できますが、以下の記事にある通り、バージョンによって動きが違いかなり複雑なので詳細は割愛します。

Go ModuleはGoのバージョンが新しいと、必須になっておりgo getはGo Module無しでは使えなくなっています。

解決方法

以下の通り、GO111MODULEautoにしてgo.modファイルがない場所では以前の$GOPATHを使った動きになるようにしました。

go env -w GO111MODULE=auto

上のコマンドを実行後にgo get -d github.com/writefreely/writefreely/cmd/writefreelyを実行すると、$GOPATH/srcにソースコードがダウンロードされます。
cd $GOPATH/src/github.com/writefreely/writefreely
$GOPATHが設定されていない場合、$GOPATHはホームディレクトリーのgoディレクトリーにデフォルトでは作られるので$HOME/go/src/github.com/writefreely/writefreelyで移動できるかと思います。

その他

  • 私の環境ではecho $GOPATHで確認しても値が設定されていませんが、go env GOPATHでは値が設定されていました。どうやら最近のGoではzhrcなどに$GOPATHを設定する必要はなさそうです。

  • $GOPATHの方法でgo getを使うと$GOPATH/src/にソースがダウンロードされるが、Go Moduleでgo getを使うと$GOPATH/pkg/modにダウンロードされます。

Since Go 1.15, go get by default will download source codes inside $GOPATH/pkg/mod/ (GOMODCACHE) which is in place of what it used to be $GOPATH/src/

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0