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?
account
paquete importa elbase
paquete, que importa elmux
paquete, que importa elaccount
paquete. Es un conjunto cíclico de dependencias de importación, que no está permitido. Parece que también tienes otro ciclo,base
importacionesmux
, qué importacionesroutes
, qué importacionesbase
.Respuestas:
Aquí hay una ilustración de su primer problema de ciclo de importación.
Como puede ver con mi gráfico ASCII incorrecto, está creando un ciclo de
project/components/mux
importación cuando importaproject/controllers/account
. Como Go no admite dependencias circulares, obtiene elimport cycle not allowed
error durante el tiempo de compilación.fuente
watcher
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:
En foo_test.go:
fuente
Es posible que haya importado,
dentro de
Ya has importado antes. Eso no es compatible.
fuente