Versão $ go 1.13.3
Eu tenho uma estrutura de pastas da seguinte maneira:
GOPATH
+---src
+--- my-api-server
+--- my-auth-server
+--- main.go
+--- my-utils
+--- uuid
+--- uuid.go
my-auth-server
usa my-api-server/my-utils/uuid
como uma dependência
Agora, quando eu usei o sistema de módulo baseado em GOPATH, isso funcionou bem. Mas quando se utiliza módulos ir, quando eu corro go run main.go
em my-auth-server
que retornou um erro:
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
Alguma idéia de como resolver isso?
go
go-modules
Ayush Gupta
fonte
fonte
Respostas:
O
go.mod
arquivo deve estar na raiz do seu projeto (neste caso,my-api-server/go.mod
).A primeira parte do caminho do módulo deve ser um domínio / caminho. Por exemplo, o caminho completo pode ser
github.com/your-github-username/my-api-server
. O erro que você está vendo é porque a primeira parte não é um domínio (com um ponto). Você não precisa publicar o módulo para desenvolvê-lo, mas precisa usar um nome de domínio adequado.Depois de ter um caminho do módulo, você pode importar pacotes contidos nesse módulo usando o caminho completo do módulo + "/" + o caminho relativo do pacote. Por exemplo,
Como
main.go
euuid
está contido no mesmo módulo, você não precisa de umarequire
declaração nogo.mod
arquivo para usar ouuid
pacote. Você pode importá-lo como qualquer outro pacote e ele funcionará.Eu recomendo usar
go build
e executar o executável resultante em vez de uságo run
-lo para garantir que você inclua todos os arquivos necessários no processo de compilação.Consulte https://blog.golang.org/using-go-modules para obter uma explicação de como usar os módulos Go, incluindo a segunda postagem dessa série sobre como converter um projeto para usar módulos.
fonte
Verifique seus caminhos de importação no seu arquivo main.go. Eu tive que chamar o caminho de importação inteiro "github.com/[usernameername/[project-name.la/views em vez de [nome do projeto] / views para fazê-lo funcionar do meu lado.
fonte
PORQUE NÃO PODE ENCONTRAR O MÓDULO !!!
Não coloque seu projeto dentro do GOPATH ... isso é tão confuso
Em vez de...
definido em .bashrc: export GO111MODULE = on
feche todos os terminais da linha de comando e reabra os terminais
vá para a pasta raiz do projeto
$ go mod init project_module_name
Isso irá gerar o arquivo go.mod
Instale seus pacotes com a versão que você deseja:
go get -v github.com/golang/[email protected]
Em seguida, execute $
go run main.go
Agora, o arquivo go.mod deve registrar as versões do pacote que o Golang usará para executar e compilar ...
Verifique se você está usando as versões corretas do pacote, verificando o arquivo go.mod! Ele deve se parecer com: github.com/golang/protobuf v1.3.4
fonte
Do not put your project inside GOPATH... that is so confusing
- Essa é uma convenção, que eu particularmente prefiro.missing dot in first path element
não écannot resolve module
incorrect
?