неправильно сформированный путь к модулю «xxxx / xxxx / uuid» отсутствует точка в первом элементе пути при миграции из основанного на GOPATH мода dep to go - PullRequest
2 голосов
/ 20 октября 2019
$ go version
1.13.3

У меня структура папок выглядит следующим образом:

GOPATH
+---src
     +--- my-api-server
           +--- my-auth-server
                 +--- main.go
           +--- my-utils
                 +--- uuid
                       +--- uuid.go

my-auth-server использует my-api-server/my-utils/uuid в качестве зависимости

Теперь, когда я использовал модульную систему на основе GOPATH,это работало нормально. Но при использовании модулей go, когда я запускаю go run main.go в my-auth-server, возвращается ошибка:

build command-line-arguments: cannot load my-api-server/my-utils/uuid: malformed module path "my-api-server/my-utils/uuid": missing dot in first path element

Есть идеи, как решить эту проблему?

Ответы [ 2 ]

2 голосов
/ 25 октября 2019

Файл go.mod должен находиться в корне вашего проекта (в данном случае my-api-server/go.mod).

Первая часть пути модуля должна быть доменом / путем. Например, полный путь может быть github.com/your-github-username/my-api-server. Ошибка, которую вы видите, заключается в том, что первая часть не является доменом (с точкой). Вам не нужно публиковать модуль для его разработки, но вам нужно использовать правильное доменное имя.

Получив путь к модулю, вы можете импортировать пакеты, содержащиеся в этом модуле, используя полный путь к модулю +"/" + относительный путь пакета. Например,

import "github.com/your-github-username/my-api-server/my-utils/uuid"

Поскольку main.go и uuid содержатся в одном и том же модуле, вам не нужен оператор require в файле go.mod, чтобы использовать пакет uuid,Вы можете импортировать его, как любой другой пакет, и он будет работать.

Я рекомендую использовать go build и запустить полученный исполняемый файл, а не go run, чтобы убедиться, что вы включили все файлы, необходимые для сборки. process.

См. https://blog.golang.org/using-go-modules для пошагового руководства по использованию модулей Go, включая второй пост из этой серии о том, как преобразовать проект для использования модулей.

0 голосов
/ 07 ноября 2019

Решение: Для меня проблема была решена после изменения переменной среды GOROOT с "/ usr / loca / go / bin" на "/ usr / local / go"

Выполнить команду "go mod vendor",Вы можете получить ошибку для всех зависимостей пакета, говоря «отсутствует точка в первом элементе пути». Отладка заняла много времени.

ОС: Linux centos

...