[go] GOPATH 기반 dep에서 go mod로 마이그레이션 할 때 첫 번째 경로 요소에 잘못된 모듈 경로“xxxx / xxxx / uuid”누락 된 점

$ 이동 버전
1.13.3

다음과 같은 폴더 구조가 있습니다.

GOPATH
+---src
     +--- my-api-server
           +--- my-auth-server
                 +--- main.go
           +--- my-utils
                 +--- uuid
                       +--- uuid.go

my-auth-server사용 my-api-server/my-utils/uuiddepenency로서

이제 GOPATH 기반 모듈 시스템을 사용할 때 정상적으로 작동했습니다. 이동 모듈을 사용하지만, 내가 실행하는 경우 go run main.gomy-auth-server이 오류를 반환했습니다 :

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

어떻게 해결할 수 있습니까?



답변

go.mod파일 (이 경우 프로젝트의 루트에 있어야합니다 my-api-server/go.mod).

모듈 경로의 첫 부분은 도메인 / 경로 여야합니다. 예를 들어 전체 경로는입니다 github.com/your-github-username/my-api-server. 당신이보고있는 오류는 첫 번째 부분이 도메인이 아니기 때문입니다 (마침표가 있음). 모듈을 개발하기 위해 모듈을 게시 할 필요는 없지만 적절한 도메인 이름을 사용해야합니다.

모듈 경로가 있으면 전체 모듈 경로 + “/”+ 패키지의 상대 경로를 사용하여 해당 모듈에 포함 된 패키지를 가져올 수 있습니다. 예를 들어

import "github.com/your-github-username/my-api-server/my-utils/uuid"

이후 main.gouuid같은 모듈에 포함되어, 당신은 필요가 없습니다 require에 문을 go.mod사용하는 파일 uuid패키지를. 다른 패키지처럼 가져올 수 있으며 작동합니다.

빌드 프로세스에 필요한 모든 파일을 포함시키기 위해 go build사용 go run하는 대신 결과 실행 파일을 사용 하고 실행하는 것이 좋습니다 .

모듈 을 사용하도록 프로젝트를 변환하는 방법에 대한 시리즈 의 두 번째 게시물 을 포함하여 Go 모듈 사용 방법에 대한 연습은 https://blog.golang.org/using-go-modules 를 참조 하십시오 .


답변

main.go 파일에서 가져 오기 경로를 확인하십시오. 내 프로젝트에서 작동하도록 [프로젝트 이름] / views 대신 전체 가져 오기 경로 “github.com/[username]/[project-name]/views”를 호출해야했습니다.


답변

GO가 모듈을 찾을 수 없기 때문에 !!!

GOPATH 안에 프로젝트를 넣지 마십시오 … 혼란 스럽습니다.

대신에 …

.bashrc에 설정 : export GO111MODULE = on

모든 명령 행 터미널을 닫은 후 터미널을 다시여십시오.

프로젝트 루트 폴더로 이동

$ go mod init project_module_name

go.mod 파일이 생성됩니다

원하는 버전으로 패키지를 설치하십시오.
go get -v github.com/golang/protobuf@v1.3.4

그런 다음 $를 실행하십시오. go run main.go

이제 go.mod 파일은 Golang이 실행 및 빌드하는 데 사용할 패키지 버전을 기록해야합니다.

go.mod 파일을 확인하여 올바른 패키지 버전을 사용하고 있는지 확인하십시오! github.com/golang/protobuf v1.3.4와 같이 표시되어야합니다.


답변