Модули Go не найдены с помощью VGO и go.mod
Я использую версионную команду Go для управления своими поставщиками, все работает, но когда я запускаю go build
он не находит мои локальные пакеты
Я установил корень модуля внутри моего go.mod
с я все еще получаю ошибку
build foo: не могу найти модуль для пути
Арка проекта похожа
foo/
|__src/github.com/username/package1/package1.go
|__src/github.com/username/package2/package2.go
|__src/github.com/username/package3/package3.go
|__main.go
|__go.mod
|__go.sum
Так что мой go.mod
выглядит как
module foo
require (
...
)
Я следовал за https://research.swtch.com/vgo-tour но я не понимаю, почему это не работает.
Моя версия Go 1.11
и foo
папка внутри моего GOPATH
когда я пытаюсь за пределами GOPATH
это даже не работает.
Единственный раз, когда я заставил это работать
module github.com/username/package1
require (
...
)
но 2 других пакета не найдены, и я получаю ту же ошибку, что и выше.
Я что-то пропустил или нужно изменить путь к модулю?
1 ответ
Я предполагаю, что ваши локальные импортированные пакеты неверны, следуйте моему примеру.
Есть мой go.mod
(вне GOPATH
Я импортировал mux
например):
module example
require github.com/gorilla/mux v1.6.2 // indirect
Кстати, вы можете создать пустой go.mod
, go
найдет и обновит ваш go.mod
для тебя.
main.go
:
package main
import (
_ "example/src/foo" // local package
"fmt"
_ "github.com/gorilla/mux" // example import
)
func main() {
fmt.Println("foo")
}
foo
местный пакет:
package foo
import "fmt"
func bar() {
fmt.Println("foo")
}
Дерево модулей:
├── go.mod
├── go.sum
├── main.go
└── src
└── foo
└── foo.go
Вы можете найти больше объяснения здесь Modules