Как исправить ошибку сборки Go "не удается загрузить пакет" с модулями Go?

Я создаю новый проект, используя модули Go с этим руководством, а затем пытаюсь его построить.

Модуль находится в папке за пределами $GOPATH со следующей структурой:

example.com
├── my-project
├── ├── main
├── ├── ├── main.go
├── ├── go.mod

Я бегал go mod init example.com/my-project в каталоге example.com/my-project и создал файл go.mod, показанный выше.

main.go имеет основное содержание:

package main

import (
"fmt"
)
func main(){
 fmt.Println("Hello, world!")
}

После попытки запустить go build в каталоге example.com/my-projectЯ получаю следующее сообщение об ошибке:

can't load package: package example.com/my-project: unknown import path "example.com/my-project": cannot find module providing package example.com/my-project,

Я также пытался бежать go build в каталоге /, вне example.com/my-project, и я получаю аналогичные результаты с ошибками:

can't load package: package .: no Go files in ...

Возможно, я неправильно понял некоторые основные вещи, так что спасибо за ваше терпение и любую помощь, которую вы можете оказать.

2 ответа

Решение

Нет необходимости в директории main, просто переместите ваш main.go и go.mod на example.com/my-project, и он будет работать.

Корень проекта должен выглядеть так:

.
├── go.mod
└── main.go

В моем случае это было то, что переменные GOMOD и GOWORK принимали другие значения, отличные от проекта, я решил это, выполнив командуgo envи проверка значений этих переменных и удаление файлов по этому адресу.

Затем я удалилgo.modиgo.sumфайл из проекта и снова запустил следующие команды:

      go mod init projectName
go mod tidy
go run ./...

И это сработало отлично.

Другие вопросы по тегам