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


12
$ 이동 버전
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

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


답변:


10

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 를 참조 하십시오 .


1

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


-1

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와 같이 표시되어야합니다.


Do not put your project inside GOPATH... that is so confusing-그건 제가 선호하는 컨벤션입니다.
Ayush Gupta

또한 오류는 missing dot in first path element아닙니다cannot resolve module
Ayush Gupta

Ayush Gupta, 잘못된 모듈 사용으로 인한 오류
Russo

정의 incorrect하시겠습니까?
Ayush Gupta

잘못된 패키지 버전의 파일 경로가 잘못되었습니다 => Golang이 올바른 파일을 실행하거나 빌드 할 수 없습니다
Russo
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.