Модули 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

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