$ go version 1.13.3
Tengo una estructura de carpetas de la siguiente manera:
GOPATH
+---src
+--- my-api-server
+--- my-auth-server
+--- main.go
+--- my-utils
+--- uuid
+--- uuid.go
my-auth-server
utiliza my-api-server/my-utils/uuid
como dependencia
Ahora, cuando utilicé el sistema de módulos basado en GOPATH, funcionó bien. Pero cuando se utiliza módulos go, cuando corro go run main.go
en el my-auth-server
que devolvió el error:
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
Alguna idea de como resolver esto?
go
go-modules
Ayush Gupta
fuente
fuente
Respuestas:
El
go.mod
archivo debe estar en la raíz de su proyecto (en este casomy-api-server/go.mod
).La primera parte de la ruta del módulo debe ser un dominio / ruta. Por ejemplo, la ruta completa podría ser
github.com/your-github-username/my-api-server
. El error que está viendo es porque la primera parte no es un dominio (con un punto). No tiene que publicar el módulo para desarrollarlo, pero debe usar un nombre de dominio adecuado.Una vez que tenga una ruta de módulo, puede importar paquetes contenidos en ese módulo usando la ruta de módulo completa + "/" + la ruta relativa del paquete. Por ejemplo,
Dado
main.go
yuuid
están contenidos en el mismo módulo, usted no necesita unarequire
declaración en elgo.mod
archivo a utilizar eluuid
paquete. Puede importarlo como cualquier otro paquete y funcionará.Recomiendo usar
go build
y ejecutar el ejecutable resultante en lugar de usargo run
para asegurarse de incluir todos los archivos que necesita en el proceso de compilación.Consulte https://blog.golang.org/using-go-modules para obtener un tutorial sobre cómo usar los módulos Go, incluida la segunda publicación de esa serie sobre cómo convertir un proyecto para usar módulos.
fuente
Verifique sus rutas de importación en su archivo main.go. Tuve que llamar a la ruta de importación completa "github.com/[usernamefont>/[project-namefont>/views en lugar de [project-name] / views para que funcione en mi extremo.
fuente
PORQUE IR NO PUEDE ENCONTRAR EL MÓDULO !!!
No coloque su proyecto dentro de GOPATH ... eso es tan confuso
En lugar...
establecido en .bashrc: export GO111MODULE = on
cierre todos los terminales de línea de comando, luego vuelva a abrir los terminales
ir a la carpeta raíz del proyecto
$ go mod init nombre_módulo_proyecto
Esto generará el archivo go.mod
Instale sus paquetes con la versión que desee:
go get -v github.com/golang/[email protected]
Luego ejecuta $
go run main.go
Ahora el archivo go.mod debería registrar las versiones del paquete que Golang usará para ejecutar y compilar ...
¡Asegúrese de estar utilizando las versiones de paquete correctas al verificar el archivo go.mod! Debería verse así: github.com/golang/protobuf v1.3.4
fuente
Do not put your project inside GOPATH... that is so confusing
- Esa es una convención, que prefiero particularmente.missing dot in first path element
no escannot resolve module
incorrect
?