가져 오기주기가 허용되지 않습니다 테스트하려고 할 때 나타납니다. 출력으로 can’t load

나는 문제가있다

가져 오기주기가 허용되지 않습니다

컨트롤러를 테스트하려고 할 때 나타납니다. 출력으로

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

누군가이 오류를 읽거나 이해하는 방법을 말해 줄 수 있습니까? 의존성은 어디에 있습니까?



답변

다음은 첫 번째 가져 오기주기 문제를 보여줍니다.

                  project/controllers/account
                     ^                    \    
                    /                      \
                   /                        \ 
                  /                         \/
         project/components/mux <--- project/controllers/base

잘못된 ASCII 차트에서 볼 수 있듯이 가져올 때 project/components/mux가져 오기주기를 생성하고 있다는 것 project/controllers/account입니다. Go는 순환 종속성을 지원하지 않으므로 import cycle not allowed컴파일 시간 동안 오류가 발생합니다.


답변

방금이 문제가 발생했습니다. 패키지 이름 자체를 사용하여 동일한 패키지 내에서 메소드 / 유형에 액세스 할 수 있습니다.

다음은 내가 의미하는 바를 설명하는 예입니다.

foo.go에서 :

// foo.go
package foo

func Foo() {...}

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


답변

수입했을 수도 있습니다.

project/controllers/base

내부

project/controllers/routes

이전에 이미 가져 왔습니다. 지원되지 않습니다.


답변