괴발개발 성장기

Study/Go 언어

[golang] go get으로 패키지를 가져올 때 에러 메시지

지니유 2022. 1. 16. 03:10
반응형

# 문제점

github에 만든 패키지를 go get으로 가져올 때 에러 메시지가 나오면서 적용이 되지 않았다.

 

# 에러 메시지

go: downloading github.com/YooGenie/validate-check v0.0.0-20220115172739-5c5798d0821b
go get: github.com/YooGenie/validate-check@none updating to
        github.com/YooGenie/validate-check@v0.0.0-20220115172739-5c5798d0821b: parsing go.mod:
        module declares its path as: validate-check
                but was required as: github.com/YooGenie/validate-check

go build를 해야 한다는 말이 많아서 개발환경 설정하는 방법부터 공부를 시작했다. 그런데 main이 없어서 go build가 되지 않는 상황이었다. 다른 사람들 패키지를 보면 main이 없는데 왜 내꺼는 안될까???

go build를 해야한다는 생각에만 꽂혀서 문제점을 너무 늦게 파악했다.

그 이후 계속 정보를 찾아봤다.

 

https://go.dev/doc/tutorial/create-module

 

Tutorial: Create a Go module - The Go Programming Language

Tutorial: Create a Go module This is the first part of a tutorial that introduces a few fundamental features of the Go language. If you're just getting started with Go, be sure to take a look at Tutorial: Get started with Go, which introduces the go comman

go.dev

정보가 나와 있어서 보고 따라서 했지만...

go mod init example.com/greetings

위에 명령어를 실행하면 go.mod 파일이 생성되면서 맨 위 줄에 아래 코드가 있다.

module example.com/greetings

여기에서 example.com/greetings 이게 폴더명이라고 계속 생각했던 게 문제였다.

 

# 잘못된 작성 방법

go mod init validate-check

나는 위에 코드처럼 폴더명으로 작성을 했다. 그러니까 go.mod에 module validate-check으로 표시가 돼서 에러가 계속 발생한 것이다.
다른 패키지를 보니까 다들 module 깃허브 주소가 있다는 걸 발견하고 변경했다.

 

 

# 올바른 작성 방법

go mod github.com/YooGenie/validate-check

이렇게 작성해서 go.mod를 만들었다. 그랬더니 module github.com/YooGenie/validate-check 이렇게 표시됐다!

 

코드에서 다이렉트로 module명을 변경해도 된다.

 

 

# 성공

다른 코드에서 내 패키지를 불렀더니 된다!!!!!!

C:\Users\bsit\go\src\Menu\study-service>go get -u github.com/YooGenie/validate-check
go: downloading github.com/YooGenie/validate-check v0.0.0-20220115173242-1491f3a382f9
go get: added github.com/YooGenie/validate-check v0.0.0-20220115173242-1491f3a382f9

 

+ 회고

정보를 열심히 찾았지만 내가 미처 발견하지 못했다. 그래서 나는 계속 go mod init를 할 때 폴더명을 입력했다. 그게 문제라는 걸 너무 늦게 캐치했다. 나는 main이 없어 go build가 되지 않는 게 문제라고 생각했다. 다른 패키지를 봐도 main 없는 게 많았는데... 그래서 go build 안 되는 이유를 중점을 찾았던 것이 문제였다.... github 패키지에서는 도커가 나와서 도커를 해야 하나 생각을 했지만.. 해결책은 생각보다 간단했다.

반응형