Проблемы с установкой augustoroman / v8 при включенном GO111MODULE = - PullRequest
0 голосов
/ 19 мая 2019

Мне удалось пройти весь процесс настройки и установки github.com/augustoroman/v8 - я построил его зависимость от V8 вручную. Когда я запускаю go test, я получаю следующий результат:

PASS
ok      github.com/augustoroman/v8  9.433s

Я установил пакет на $GOPATH/src/github.com/augustoroman/v8. Кажется, все работает хорошо на OS X до сих пор. Однако, когда я пытаюсь импортировать с import "github.com/augustoroman/v8" в свой отдельный проект, я получаю жалобу.

Вспоминая, я понял, что у меня включен GO111MODULE=on. Это побудило меня добавить go.mod со следующим в корне папки v8:

module github.com/augustoroman/v8
go 1.12

Когда я пытаюсь запустить, я получаю еще одну ошибку:

go: finding github.com/augustoroman/v8 latest
go: downloading github.com/augustoroman/v8 v8.0.0-20190418063024-4b66934a28a7
main.go:3:8: unknown import path "github.com/augustoroman/v8": cannot find module providing package github.com/augustoroman/v8

Похоже, что пакет работает соответствующим образом, однако либо настройка GO111MODULE испортила его, либо я установил пакет в неправильном месте. Однако настройки GO111MODULE вдвойне сбивают с толку из-за и без того жесткой настройки / структуры Go.

Есть предложения по устранению этой проблемы?

1 Ответ

0 голосов
/ 19 мая 2019

Когда установлено GO111MODULE=on, Go не использует GOPATH/src пакетов, скорее, использует $GOPATH/pkg/mod. (ref, официальный блог )

Итак, установка измененного пакета в $GOPATH/src/github.com/augustoroman/v8 не будет работать.

В качестве обходного пути вы можете использовать директиву replace в файле go.mod, где требуется этот модифицированный пакет.

Например, если вы используете github.com/augustoroman/v8 в example.com/me/hello проекте, тогда используйте replace в go.mod файле example.com/me/hello.

Это может быть любое абсолютное или относительное расположение на диске,

module example.com/me/hello

require (
  github.com/me/some-repo v0.0.0
)

replace (
    github.com/augustoroman/v8 => /absolute/gopath/src/github.com/augustoroman/v8
)

или, что еще лучше (более идиоматично!), Ваш репозиторий fork в github.

module example.com/me/hello

require (
  github.com/me/some-repo v0.0.0
)

replace (
    github.com/augustoroman/v8 => github.com/me/v8
)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...