Использование go модулей с типичной структурой каталогов, похоже, не может заставить его работать - PullRequest
0 голосов
/ 16 июня 2020

Итак, я создал простой тестовый проект, чтобы продемонстрировать проблему, с которой я столкнулся в гораздо большей кодовой базе здесь https://github.com/cleblanc189/test.go

.
├── go.mod
├── main.exe
├── main.go
├── server
│   ├── v1beta1
│   │   ├── foo.go
│   │   └── go.mod
│   └── v1ga
│       ├── foo.go
│       └── go.mod
└── service
    ├── v1beta1
    │   ├── foo.go
    │   └── go.mod
    └── v1ga
        ├── foo.go
        └── go.mod

Я бы хотел иметь возможность для ссылки на сервис / v1beta1 с сервера / v1beta1, но я получаю эту ошибку

go: test.go/src/server/v1beta1@v0.0.0 requires
        test.go/src/service/v1beta1@v0.0.0: unrecognized import path "test.go/src/service/v1beta1" (https fetch: Get https://test.go/src/ser
vice/v1beta1?go-get=1: dial tcp: lookup test.go: no such host)

В foo. go с сервера / v1beta1 Я импортирую вот так svc "test.go/src/service/v1beta1"

и имею a go .mod файл, как показано ниже;

require test.go/src/service/v1beta1 v0.0.0

replace test.go/src/service/v1beta1 => ../../service/v1beta1

Когда я пытаюсь cd src && go mod tidy, я получаю эту ошибку выше. Кроме того, если кто-нибудь знает, должен ли я иметь go .mod над каталогом sr c?

Оцените любую помощь, которую может предложить любой. Это сводит с ума.

1 Ответ

0 голосов
/ 17 июня 2020

Ваш go.mod должен объявить путь / имя модуля, обычно примерно так:

module test.go

Тогда все import в вашем коде будут взяты относительно этого. Когда вы импортируете что-то, относящееся к объявленному имени вашего модуля, инструмент go автоматически берет код из нужного места локально.

Не уверен, где ваш src вступает в игру, хотя ... это все в папке src? См. этот пост и сопутствующий код для полного примера, с которого вы можете начать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...