go - Ciclo de importación no permitido
(3)
Tengo un problema con
ciclo de importación no permitido
Aparece cuando intento probar mi controlador. Como salida tengo
can''t load package: import cycle not allowed
package project/controllers/account
imports project/controllers/base
imports project/components/mux
imports project/controllers/account
import cycle not allowed
package project/controllers/account
imports project/controllers/base
imports project/components/mux
imports project/controllers/account
import cycle not allowed
package project/controllers/account
imports project/controllers/base
imports project/components/mux
imports project/controllers/routes
imports project/controllers/base
¿Alguien puede decirme cómo leer o entender este error? ¿Dónde está mal la dependencia?
Acabo de encontrar esto. Puede estar accediendo a un método / tipo desde el mismo paquete utilizando el nombre del paquete en sí.
Aquí hay un ejemplo para ilustrar lo que quiero decir:
En foo.go:
// foo.go
package foo
func Foo() {...}
En foo_test.go:
// foo_test.go
package foo
// try to access Foo()
foo.Foo() // WRONG <== This was the issue. You are already in package foo, there is no need to use foo.Foo() to access Foo()
Foo() // CORRECT
Aquí hay una ilustración de su primer problema de ciclo de importación.
project/controllers/account
^ /
/ /
/ /
/ //
project/components/mux <--- project/controllers/base
Como puede ver con mi gráfico ASCII incorrecto, es que está creando un ciclo de importación cuando
project/components/mux
importa
project/controllers/account
.
Como Go no admite dependencias circulares, el error de
import cycle not allowed
durante el tiempo de compilación.
Es posible que haya importado,
project/controllers/base
dentro de
project/controllers/routes
Ya has importado antes. Eso no es compatible.