неправильно сформований шлях модуля “xxxx / xxxx / uuid” відсутній крапкою в першому елементі шляху при переході з GOPATH на основі dep для переходу до моди


12
$ go версія
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

Будь-яка ідея, як це вирішити?


Дивіться цей відповідь: stackoverflow.com/a/55347424/1218512
colminator

Відповіді:


10

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щоб переконатися, що ви включаєте всі необхідні файли в процесі збирання.

Див. Https://blog.golang.org/using-go-modules, щоб ознайомитись із детальною інформацією щодо використання модулів Go, включаючи другий пост у цій серії про те, як перетворити проект у модулі.


1

Перевірте шляхи імпорту у файлі main.go. Мені довелося закликати весь імпортний шлях "github.com/ evidenceusernameSense/ evidenceproject-nameSense/views замість [ім'я проекту] / представлення, щоб він працював на моєму завершенні.


-1

ПОТРЕБИТИ НЕ МОЖЕТЕ ЗНАТИ МОДУЛЬ !!!

Не ставте свій проект всередині GOPATH ... це так заплутано

Натомість ...

встановити в .bashrc: експортувати GO111MODULE = увімкнено

закрити всі термінали командного рядка, а потім знову відкрити термінали

перейдіть до кореневої папки проекту

$ go mod init project_module_name

Це створить файл go.mod

Встановіть ваші пакунки з потрібною версією: go get -v github.com/golang/protobuf@v1.3.4

Потім запустіть $ go run main.go

Тепер файл go.mod повинен записувати версії пакету, які Golang використовуватиме для запуску та створення ...

Переконайтесь, що ви використовуєте правильні версії пакета, перевіривши файл go.mod! Це має виглядати так: github.com/golang/protobuf v1.3.4


Do not put your project inside GOPATH... that is so confusing- Це конвенція, яку я особливо віддаю перевагу.
Айуш Гупта

Також помилки missing dot in first path elementнемаєcannot resolve module
Айуш Гупта,

Аюш Гупта, помилка викликана неправильним використанням модуля
Руссо,

Визначити incorrect?
Айуш Гупта

неправильні версії пакету мають неправильний шлях до файлу => через те, що Golang не зможе знайти правильний файл для запуску чи створення
Russo,
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.