Глиф Учебники

go mod init и ошибка go.mod file not found

Справочник · Go · 2 минуты чтения

Текст
go: go.mod file not found in current directory or any parent directory; see 'go help modules'

Команды go run ., go build и go get работают внутри модуля — папки с файлом go.mod. Ошибка значит, что ни в текущей папке, ни в одной папке выше файла go.mod нет. Решение — создать модуль в папке проекта:

Bash
cd hello
go mod init example.com/hello
go run .

go mod init создаёт файл go.mod и отвечает go: creating new go.mod: module example.com/hello. Делается это один раз на проект.

Какое имя дать модулю

Имя (путь модуля) — то, с чего будут начинаться пути импорта его пакетов:

Имя можно потом поменять в первой строке go.mod (module …), но тогда придётся исправить и все import своих пакетов.

Проверьте, где вы находитесь

Частая причина ошибки — модуль создан, но команда запущена из другой папки: из папки выше проекта или из домашней. Посмотрите текущую папку и её содержимое:

Bash
pwd
ls

В Windows — cd без параметров и dir. В списке должен быть go.mod. В VS Code откройте именно папку проекта (File → Open Folder, в русской версии «Файл» → «Открыть папку»), а не папку выше: тогда и встроенный терминал откроется в ней.

Запуск одного файла без модуля

Программу из одного файла, которая использует только стандартную библиотеку, можно запустить и без go.mod, назвав файл:

Bash
go run main.go

Для чужих пакетов (go get) и для программ из нескольких пакетов модуль всё равно понадобится — проще создать его сразу.

Другие сообщения go mod init

Подводные камни

Подробно о модулях и пакетах — в уроке Пакеты и модули.