>  기사  >  백엔드 개발  >  Go 모듈에서 '버전이 없는 교체 모듈은 디렉터리 경로여야 합니다.' 오류가 발생하는 이유는 무엇입니까?

Go 모듈에서 '버전이 없는 교체 모듈은 디렉터리 경로여야 합니다.' 오류가 발생하는 이유는 무엇입니까?

Barbara Streisand
Barbara Streisand원래의
2024-11-07 06:14:02964검색

Why Does

Go 모듈과 교체의 어려움

Go 모듈 영역에서 교체 지시문은 로컬에서 개발된 패키지를 대체하겠다는 약속을 담고 있습니다. 원격 코드의 경우 실험이나 문제 해결 중에 자신의 코드로 작업할 수 있습니다. 그러나 경험하셨듯이 특정 버전 없이 패키지를 교체하는 것은 귀찮은 일이 될 수 있습니다.

"버전이 없는 교체 모듈은 디렉터리 경로(루팅 또는 .로 시작)여야 합니다."라는 오류 메시지가 나타납니다. ,"는 교체 지시문에 제공되는 경로가 모듈의 루트에 절대적이거나 상대적이어야 한다는 중요한 요구 사항을 강조합니다.

경로 복잡성 극복

경로 수수께끼가 발생합니다. Go 모듈의 구조를 살펴보겠습니다. go.mod 파일은 모듈의 ID와 종속성을 설정하는 중심 역할을 합니다. go.mod 파일과 동일한 모듈 내에 있는 패키지는 교체할 필요 없이 직접 참조할 수 있습니다. 그러나 모듈 외부 패키지를 처리할 때는 교체 지시문이 작동합니다.

귀하의 경우 mypack이라는 로컬 패키지를 활용하려고 했습니다. 이를 달성하기 위해 go.mod 파일에 다음 교체 지시문을 지정했습니다.

replace mypack -> ./src/mypack

안타깝게도 이 경로는 모듈 루트에 대해 절대적이거나 상대적인 경로가 아닙니다. "./" 접두사는 모듈의 루트와 동일하지 않은 현재 작업 디렉토리에 대한 상대 경로를 나타냅니다.

조화를 위한 경로 설정

이 문제를 해결하려면 다음 단계를 따르세요.

  1. mypack을 go 모듈로 변환: mypack 폴더 내에 go.mod 파일을 만듭니다. 이렇게 하면 mypack이 독립 모듈로 설정됩니다.
  2. 절대 경로 또는 모듈 루트에 대한 상대 경로를 지정합니다. go.mod 파일에서 절대 또는 경로를 사용하도록 교체 지시문을 수정합니다. mypack의 상대 경로입니다. 예를 들어, mypack이 모듈 루트의 형제인 경우 다음을 사용할 수 있습니다.
replace mypack -> ../mypack

추가 고려 사항

replace 지시문이 의도된 것임을 기억하세요. 임시 로컬 재정의의 경우. 영구적으로 대체하려면 공급업체 도구를 사용하거나 mypack을 모듈에 명시적으로 공급하는 것이 좋습니다.

관련 리소스:

  • 사용 방법 다른 모듈의 "GOPATH" 외부에 있는 모듈이 있습니까?

위 내용은 Go 모듈에서 '버전이 없는 교체 모듈은 디렉터리 경로여야 합니다.' 오류가 발생하는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.