Модули Go не найдены с помощью VGO и go.mod - PullRequest
0 голосов
/ 02 октября 2018

Я использую версионную команду 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 Ответ

0 голосов
/ 02 октября 2018

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

Это мой 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

...