| この記事の要点 |
|
エラー内容
go: go.mod file not found in current directory or any parent directory;
see 'go help modules'
Go コマンド (go run / go build / go test / go get 等) が Go Modules モードで動作しているとき、カレントディレクトリから親方向に go.mod を探して見つからなかった場合に出ます。
背景: GOPATH モード vs Modules モード
Go 1.11 で導入された Modules は、Go 1.16 以降デフォルトです。GOPATH モードは Go 1.22 で完全廃止予定。
| 項目 | GOPATH モード (廃止) | Modules モード (現行) |
|---|---|---|
| プロジェクト場所 | $GOPATH/src/github.com/... | 任意の場所 |
| 依存管理 | $GOPATH/src に展開 | go.mod + go.sum |
| バージョン | 固定不能 | Semantic Versioning |
| GO111MODULE | off | on (デフォルト) |
対処 1: 新規プロジェクトを作る
# プロジェクトディレクトリ作成
mkdir myapp && cd myapp
# モジュール初期化
go mod init github.com/myuser/myapp
# → go.mod が生成される
cat go.mod
# module github.com/myuser/myapp
#
# go 1.22
# サンプル main.go
cat > main.go <<'GO'
package main
import "fmt"
func main() {
fmt.Println("Hello, modules!")
}
GO
go run .
# Hello, modules!
対処 2: 既存ソースに go.mod を後付け
GOPATH 時代のリポジトリを Modules 化する場合:
cd existing-project
# 初期化 (パスは GitHub URL を推奨)
go mod init github.com/myuser/existing-project
# import を解析して依存を go.mod / go.sum に書き込み
go mod tidy
# 確認
cat go.mod
cat go.sum
# ビルド
go build ./...
対処 3: モジュールパスを正しく指定
go mod init の引数はリポジトリの URL に合わせます。間違っていると後から go get で参照できません。
| シチュエーション | module path 例 |
|---|---|
| GitHub 公開 | github.com/user/repo |
| GitLab 公開 | gitlab.com/group/repo |
| 社内 Git | git.corp.example.com/team/repo |
| 主モジュール内のサブ | github.com/user/repo/v2 (Major 2 以上) |
| ローカル試作 | example.com/myapp でも可 |
対処 4: GO111MODULE 環境変数
# 現在の設定確認
go env GO111MODULE
# 強制的に Modules モード
export GO111MODULE=on
go env -w GO111MODULE=on
# 強制的に GOPATH モード (非推奨)
export GO111MODULE=off
# auto (古いデフォルト) は Go 1.16 で廃止
対処 5: プライベートモジュール (GOPRIVATE)
社内 Git や GitHub の private repo を依存にする場合、Go の Public Module Proxy (proxy.golang.org) 経由ではアクセスできず、認証エラーになります。
# プライベートリポジトリは proxy を通さない
export GOPRIVATE=git.corp.example.com,github.com/mycompany/*
go env -w GOPRIVATE=git.corp.example.com,github.com/mycompany/*
# HTTPS の代わりに SSH を使う (~/.gitconfig)
git config --global url."ssh://git@github.com/".insteadOf "https://github.com/"
# GitHub Personal Access Token を埋め込む (.netrc)
cat > ~/.netrc <<EOF
machine github.com
login myuser
password ghp_XXXXXXXXXXXXXXXXXXXX
EOF
chmod 600 ~/.netrc
# sumcheck も無効化したい場合
go env -w GONOSUMCHECK=git.corp.example.com
go env -w GONOSUMDB=git.corp.example.com
対処 6: Vendor ディレクトリで完全オフライン
CI でネットワーク不要にしたい / 依存をリポジトリに同梱したい場合:
# 依存を vendor/ に取得
go mod vendor
# ディレクトリ構造
# myapp/
# ├── go.mod
# ├── go.sum
# ├── main.go
# └── vendor/
# ├── modules.txt
# └── github.com/...
# vendor を使ってビルド
go build -mod=vendor ./...
# Go 1.14+ は vendor/ があれば自動利用
go build ./...
go.mod ファイルの構造
module github.com/myuser/myapp
go 1.22
require (
github.com/gin-gonic/gin v1.9.1
github.com/go-sql-driver/mysql v1.7.1
gorm.io/gorm v1.25.5
)
require (
// 間接依存 (indirect)
github.com/bytedance/sonic v1.9.1 // indirect
github.com/gin-contrib/sse v0.1.0 // indirect
)
// バージョン置換 (フォーク利用)
replace github.com/old/pkg => github.com/new/pkg v1.2.3
// ローカルパス置換 (開発時)
replace example.com/mylib => ../mylib
// 除外
exclude github.com/buggy/pkg v1.0.0
よく使うコマンド一覧
| コマンド | 動作 |
|---|---|
go mod init PATH | 新規モジュール作成 |
go mod tidy | 未使用削除 + 不足追加 |
go mod download | 依存を $GOPATH/pkg/mod に取得 |
go mod vendor | vendor/ に同梱 |
go mod verify | ハッシュ検証 |
go mod why pkg | なぜ依存しているか |
go mod graph | 依存グラフ |
go get pkg@v1.2.3 | バージョン指定取得 |
go get -u ./... | 全依存を最新へ |
FAQ
Q: go run main.go がエラーになる
A: カレントディレクトリに go.mod が必要です。go mod init を先に実行してください。
Q: 古いプロジェクトを GOPATH 配置のまま使い続けたい
A: GO111MODULE=off で可能ですが Go 1.22 以降は廃止。Modules 化を強く推奨します。
Q: go.sum って何?
A: 依存モジュールのハッシュ。改竄検知用。Git にコミットする慣例です。
Q: 別のモジュールパスに引っ越したい
A: go.mod の module 行を書き換え、コード内 import も一括置換。go mod tidy。
子ページはありません
同階層のページはありません
人気ページ
- 1 Eclipseで「サーバーに追加または除去できるリソースがありません。」の原因と対処法
- 2 tomcat の起動 / 停止ログと catalina.log・catalina.out の違い
- 3 JavaScript で base URL を取得する方法|window.location.origin
- 4 YouTube Data API v3 エラー一覧|403・400・404 の原因と対処
- 5 Laravel エラー一覧|500/Blade/DB 接続/ルーティングの代表エラー
- 6 3Dグラフィックスのソフト一覧|Blender・Metasequoiaと用途別の選び方
- 7 Spring Frameworkのアノテーション一覧
- 8 【Spring】@Valueアノテーションとは
- 9 CATALINA_HOME の確認方法 (Linux / Mac)
- 10 【Spring】@Autowiredアノテーションとは
最近更新/作成されたページ
- Visual Studio「デザイナーを表示できません」エラーの原因と対処 2026-10-28 12:06:00
- SSH 認証に失敗しました。再試行してください の対処 2026-10-28 12:06:00
- SSH2 秘密鍵の読み込みに失敗しました の原因と対処 2026-10-28 12:06:00
- TeraTerm のよくあるエラーと対処法完全ガイド — Connection refused / 2026-10-28 12:06:00
- Visual Studio エラー一覧|コンパイルエラー・警告の確認方法と対処 2026-10-28 11:39:57
- Whitelabel Error Page の原因と消し方|Spring Boot のエラーページ 2026-10-28 11:39:57
- Eclipseで「サーバーに追加または除去できるリソースがありません。」の原因と対処法 2026-10-28 11:39:57
- SQL WHERE 句完全ガイド 2026-10-28 11:39:57
- SQL JOIN 完全ガイド (INNER/LEFT/RIGHT/FULL OUTER) 2026-10-28 11:39:57
- tomcat の起動 / 停止ログと catalina.log・catalina.out の違い 2026-10-28 10:24:23
- Tomcat の起動確認方法 5 つ|localhost:8080・ポート・プロセス・ログ 2026-10-28 10:24:23
- Oracle 19c COMMITの使い方: 暗黙コミット・自動確定・応答不明時の確認 2026-10-28 09:59:09
- Oracle 19c DELETE文|削除対象の確認・COMMIT前の判断・ROLLBACKの条件 2026-10-28 09:59:09
- Oracle 19c INSERT文|INSERT ALL・SELECT・RETURNINGとMERGEの使い分け 2026-10-28 09:59:09
- Oracle 19cのトランザクション制御|COMMIT・ROLLBACK・分離レベルと接続設定 2026-10-28 09:59:09