no required module provides package github.com

go1.16 で golang を書いて build すると、タイトル通りのエラーが表示された。

調べてみると go 1.15 までは go buildgo test などのコマンドを実行すると、 go.modgo.sum の内容をよしなに更新されていたが、go 1.16 からは自動では更新されなくなったようだ。

これを解決するには

$ go mod tidy

とすることで、go のモジュールに書かれている不足分のパッケージを go.mod に書き込んでくれる

% go build -o hoge.go
main.go:7:2: no required module provides package github.com/hackebrot/turtle; to add it:
        go get github.com/hackebrot/turtle


% go mod tidy
go: finding module for package github.com/hackebrot/turtle
go: downloading github.com/hackebrot/turtle v0.1.0
go: found github.com/hackebrot/turtle in github.com/hackebrot/turtle v0.1.0
go: finding module for package github.com/hackebrot/go-repr/repr
go: finding module for package github.com/google/go-cmp/cmp
go: downloading github.com/google/go-cmp v0.5.5
go: downloading github.com/hackebrot/go-repr v0.1.0
go: found github.com/google/go-cmp/cmp in github.com/google/go-cmp v0.5.5
go: found github.com/hackebrot/go-repr/repr in github.com/hackebrot/go-repr v0.1.0

% go build -o hoge.go

参考情報

https://golang.org/ref/mod#go-mod-tidy