레이블이 go.mod인 게시물을 표시합니다. 모든 게시물 표시
레이블이 go.mod인 게시물을 표시합니다. 모든 게시물 표시

golang 1.16 go.sum 에러

# go.sum 은 go.mod 에 명시된 패키지들을 다운로드 후 각 패키지를 해시값으로 표시해
# 추후 로컬 패키지가 정상인지(변조,오염되지는 않았는지) 파악하는 체크썸 파일이다.
# 가끔 go.sum 을 커밋을 하지 않는(.gitignore 에 명시해서) 경우가 있는데
# go.sum 을 커밋해 다른 동료들과 패키지 버전을 맞출 수 있도록 해야 한다.

# 빌드는 되지만 vscode 에 다음과 같은 에러 메시지가 보였다.

error while importing github.com/stretchr/testify/assert: missing go.sum entry for module providing package github.com/pmezard/go-difflib/difflib (imported by github.com/stretchr/testify/assert); to add:
go get github.com/stretchr/testify/assert@v1.6.1compiler

missing go.sum entry for module providing package github.com/tidwall/match (imported by github.com/tidwall/gjson); to add:
        go get github.com/tidwall/gjson@v1.6.0

# 필요없는 패키지를 정리(tidy)해도 에러 메시지가 발생한다.
go mod tidy

# 원인은 go 1.13 버전을 사용하다 1.16 버전으로 명시된 go.mod 를 사용해서다.
# go.sum 체크썸 확인해보니 내 로컬의 mod cache(GOPATH/pkg/mod)가 go 1.13 으로 되어 있어 문제가 됐다.
# vscode IDE 에서 go.sum 기반으로 자동으로 잘못된 부분을 에러로 표시하고 있었다.

# 현재 go 1.16 임을 확인하고
go version
go version go1.16 darwin/amd64

# 다음 명령으로 다운로드된 패키지로 로컬 캐시를 업데이트 하면 된다.
go mod download

# 참고로
# go 1.15 까지는 -mod=mod 가 디폴트였지만
# go 1.16 부터 -mod=readonly 가 디폴트로, go.mod, go.sum 를 업데이트를 위해선
# 명시적으로 (go build, go test 등 사용시) -mod=mod 를 명시해야 한다.