我有以下项目结构,在GOPATH
.
. // Project root
├── Dockerfile
├── .env
├── README.md
└── src
├── main.go
├── go.mod
├── go.sum
├── internal
│ ├── somepackage
│ │ ├── main.go
│ │ └── types.go
│ ├── someother
│ │ ├── main.go
│ │ ├── oauth.go
│ │ └── types.go
│ └── models
│ └── main.go
└── pkg
├── somepackage
│ └── main.go
└── anotherpackage
└── main.go
我想运行位于src
目录中的 Go 模块代码。当我cd
进入src
目录和go run .
/或go build .
我的代码时,它工作得很好。
当我站在项目的根部时,我无法运行go run ./src
或go build ./src
. 我收到以下错误。
src/service.go:8:2: cannot find package "web-service/internal/auth" in any of:
/usr/lib/go/src/web-service/internal/auth (from $GOROOT)
/home/miloertas/Packages/go/src/web-service/internal/auth (from $GOPATH)
src/endpoints.go:3:8: cannot find package "web-service/internal/handlers" in any of:
/usr/lib/go/src/web-service/internal/handlers (from $GOROOT)
/home/miloertas/Packages/go/src/web-service/internal/handlers (from $GOPATH)
重要的是我的源代码保留在此src
目录中。run
同样重要的是,我能够build
从项目的根目录获取代码(例如,.env
文件位于存储库的根目录)。
因此,我正在从我的项目的根目录中寻找一种方法run
或build
我的代码。src
我尝试移动go.mod
项目的根目录并运行并运行go run ./src
,但这会导致其自身的问题:
- 该
go
命令现在无法找到所有子包internal
和pkg
- VSCode 现在丢失并且由于某些原因无法执行测试(主要是因为没有找到所有子包)。