go - 如何从父目录运行兄弟 Go 应用程序(模块)
问题描述
我有多个 Go 项目(而且它们都是Go 模块)都在一个文件夹中。它们都是 HTTP 服务器并交换 REST 调用,因此,我需要所有它们同时启动并运行。
因此,出于本地测试的目的,我认为从父级运行所有它们而不是移动所有项目根目录并go run main.go
在多个终端中运行是合理的。
container_dir/
├── prj1/
│ ├── go.mod
│ ├── main.go
│ └── ...
├── prj2/
│ ├── go.mod
│ ├── main.go
│ └── ...
└── ...
以下是我尝试过的一些命令以及每次的错误消息:
container_dir $ go run ./*/*.go
##ERROR: named files must all be in one directory; have ./prj1/ and ./prj2/
container_dir $ go run *.go
##ERROR: stat *.go: no such file or directory
container_dir $ go run ./prj1 ./prj2/
##ERROR: cannot find package "github.com/jackc/pgx/v4" in any of:
/usr/local/go/src/github.com/jackc/pgx/v4 (from $GOROOT)
/home/user/go/src/github.com/jackc/pgx/v4 (from $GOPATH)
cannot find package ...
所以,我可以对这个问题进行最后的调整:当它们有一些第三方依赖项等时,如何在同级目录中运行多个 go 模块?
PS:尽可能使用 Go 模块建议container_dir
我的项目位于任意位置,我希望没有$GOPATH
相关性。
去版本:1.13.6
解决方案
- 不要
go run
在小型的游乐场式测试之外使用 - 源路径是编译时的问题,在运行时是无关紧要的——当程序运行时,位于“同级目录”中并不意味着什么
go run
运行单个程序;就像构建一个程序并运行它的可执行二进制文件(就是这样go run
做的)运行一个程序一样。
推荐阅读
- android - Android webview检测特定页面更改
- go - 纹理如何在OpenGL3中显示为颜色而不是灰度?
- javascript - 当我尝试创建一个供事件侦听器读取的元素时,控制台抛出未定义
- visual-studio - Visual Studio 2019 社区版 16.7.0 挂起
- python - 如何在python tkinter中向复选框添加垂直滚动条?
- php - Laravel 查询生成器仅获取具有特定进度的项目
- java - 如何根据camunda中的processInstanceId获取taskId
- java - 从java发送重定向到Angular 8
- visual-studio - 在 Visual Studio 2019 上,如何在 C++ Debug 程序中调试纯 C++ 和 CLI C++?
- python - 从字典列表中添加新列