発生事象

外部パッケージを使っているコードを実行しようとすると no required module provides package のエラーになってしまいました。

コード例

package main

import (
    "context"

    "google.golang.org/api/drive/v3"
)

func main() {
    ctx := context.Background()
    srv, err := drive.NewService(ctx)
    ...
}

エラー

main.go:9:2: no required module provides package google.golang.org/api/drive/v3; to add it:
        go get google.golang.org/api/drive/v3

すでにgo get済みなので何故?となりました。

解決方法

このプロジェクトの上位フォルダにgo.workが存在していました。私の場合、このファイルが不要だったため削除しました。ちなみに、go work init のコマンドを実行すると、カレントまたは上位フォルダにgo.workが存在する場合エラーになりますので、それで気づきました。

~/examples/app1$ go work init
go: /Users/hoge/examples/go.work already exists

Stack overflowの記事にも同様の事象があり、こちらは go work use を使って解決しているようです。