$ 이동 버전 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/uuid
depenency로서
이제 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
어떻게 해결할 수 있습니까?
답변
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 를 참조 하십시오 .
답변
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와 같이 표시되어야합니다.