개요
package xx is not in GOROOT 에러를 해결 합니다.
발생이유
사용자가 만든 패키지를 go complier가 $GOROOT에서 찾고있어서 발생함.
아마 대부분 다음 단계를 거쳐서 디레토리 구조를 이렇게 만들고 개인이 만든 패키지를 추가하려고했을 것입니다.
1. go 사용자 package 생성 및 main.go 생성
├── go.mod
├── lib
│ └── common.go
└── main.go
lib/common.go (사용자 패키지)
package common
import "fmt"
func PrintModuleName() {
fmt.Println("Common")
}
main.go
package main
import (
"lib"
)
func main() {
common.PrintModuleName()
}
2. go mod init {모듈 이름} 으로 go.mod 생성
#go mod init test-code
jinkwon@jk-server:~/aws-sdk/sample_code$ go mod init test-code
go: creating new go.mod: module test-code
go: to add module requirements and sums:
go mod tidy
3 main.go 실행
#go run main.go
그러면 에러가 똬!!!!
main.go:4:5: package lib is not in GOROOT (/snap/go/9028/src/lib)
해결 방법
go mod init {모듈 이름} 을 했을때 사용한 {모듈 이름}을 main.go에서 import한 lib 앞에 붙여주면 끝이다.
모듈 이름은 go.mod를 열어 모면 맨 윗줄에 명시되어있다.
module test-code
수정된 main.go
package main
import (
"test-code/lib"
)
func main() {
common.PrintModuleName()
}
실행 결과
jinkwon@jk-server:~/aws-sdk/sample_code$ go run main.go
Common
위와 같이 모듈 이름만 추가해서 가능한 이유는 Go Module 기능을 사용했기 때문이다.
'ProgrammingLang > Go' 카테고리의 다른 글
[go] downloading 가능한 module 및 package 만들기 (0) | 2023.01.19 |
---|---|
[go] 개발에 도움되는 오픈소스 (0) | 2023.01.18 |
[Go Lang] 4. 실전 - http server + swagger 만들기 (0) | 2021.04.14 |
[Go Lang] 3. Package 관리 (0) | 2021.04.08 |
[Go Lang] 2. 핵심 문법 (0) | 2020.06.09 |