Перейти модули - замена не работает - замена модуля без версии должен быть путь к каталогу (с рутом или с - PullRequest
1 голос
/ 05 апреля 2019

Я просто хочу использовать локальный пакет с использованием модулей go.

У меня есть эти файлы в папке goweb:

enter image description here

и go.mod

модуль goweb

go 1.12

require mypack v0.0.0

replace mypack => ./src/mypack

Но go.mod жалуется:

replacement module without version must be directory path (rooted or starting with .

иди -u ./...

go: parsing src/mypack/go.mod: open <local path>/goweb/src/mypack/go.mod: no such file or directory
go: error loading module requirements

Так что мне не хватает некоторой структуры пути здесь

1 Ответ

1 голос
/ 05 апреля 2019

Если ваше приложение и используемый пакет являются частью одного и того же модуля go, вам не нужно добавлять его в go.mod, вы можете просто сослаться на него.

Если они не являются частью одного и того же модуля go, вы можете выполнить следующие действия:

Указанный вами для директивы replace путь должен быть либо абсолютным, либо относительным путем, относительно корня модуля .

Так что, если mypack является братом вашего корневого модуля, вы можете использовать это:

replace mypack => ../mypack

Кроме того, чтобы это работало, вам также необходимо «преобразовать» mypack в модуль go (mypack должен содержать файл go.mod). Запустите go mod init mypack в своей папке.

Также проверьте связанный вопрос: Как использовать модуль, который находится вне "GOPATH" в другом модуле?

...