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.go에 my-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.go와 uuid같은 모듈에 포함되어, 당신은 필요가 없습니다 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.