go - 如何从父目录运行兄弟 Go 应用程序(模块)

标签 go go-modules

我有多个 Go 项目(它们也是 Go modules )都在一个文件夹中。它们都是 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 模块?

P.S:尽可能使用 Go 模块建议 container_dir因为我的项目位于任意位置,我希望没有 $GOPATH关联。

去版本:1.13.6

最佳答案

  • 不要使用 go run在小型的游乐场式测试之外
  • 源路径是编译时的问题,在运行时是无关紧要的——当程序运行时,在“同级目录”中并不意味着什么
  • go run运行单个程序;就像构建一个程序并运行它的可执行二进制文件(go run 所做的那样)运行一个程序。
  • 关于go - 如何从父目录运行兄弟 Go 应用程序(模块),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59771442/

    相关文章:

    git - Go 模块未下载最新的次要版本

    docker - docker 容器中的应用程序如何访问 Windows 中的数据库?

    go - 导入的结构用作匿名字段

    regex - 如何用正则表达式和 Golang 替换可选组

    go - 如何在 ioutil.ReadFile 返回的错误中检查特定类型的错误?

    go - 我应该如何将导入用于带有 go 模块的子文件夹?

    go - Go 如何更新第三方包?

    go - 如何使用备用 go.mod 文件进行本地开发?

    amazon-web-services - 有没有办法确定在编译期间从 go 模块调用了哪些函数?

    go - 如何在 Google Cloud Functions with Go 中使用 vendor 的本地存储库