我正在使用“微服务”架构来构建应用程序。 这意味着我有不同的应用程序。 事实是,某些逻辑位于“共享”库中。
请参阅以下目录结构:
ROOT/
├── Service 1/
│ ├── src
│ ├──── app.go
├── Service 2/
│ ├── src
│ ├──── app.go
└── Lib/
├── Lib 1
│ ├── src
│ ├──── app.go
服务1 ,服务2 和库1 均使用go mod
命令初始化。
对于服务1 ,这将导致一个go.mod
文件,其内容如下。
module github.com/kevin-de-coninck/datalytics/services/serviceOne
对于服务2 ,这将导致一个go.mod
文件,其内容如下。
module github.com/kevin-de-coninck/datalytics/services/serviceTwo
对于库1 ,这将导致一个go.mod
文件,其内容如下。
module github.com/kevin-de-coninck/datalytics/lib/libOne
服务1 的import
语句包含对库1
import (
"github.com/kevin-de-coninck/datalytics/lib/libOne"
)
但是,当我尝试构建应用程序时,显示以下输出:
go: finding github.com/kevin-de-coninck/datalytics/lib/libOne latest
go: finding github.com/kevin-de-coninck/datalytics/lib latest
go: finding github.com/kevin-de-coninck/datalytics latest
build github.com/kevin-de-coninck/datalytics/services/serviceOne/src:
cannot find module for path github.com/kevin-de-coninck/datalytics/lib/libOne
如何解决此问题,以便我可以使用我的 LibOne 程序包而不将其公开或在所有服务中复制它?
亲切的问候
答案 0 :(得分:0)
经过一番摆弄,我找到了答案。 似乎“ go.mod”和“ go.sum”文件应该放在“ src”目录中。 之后,可以构建并执行该应用程序。