我正在尝试在 Go 中部署 Google Cloud 功能,但在部署时出错,因为我同时使用子包和“内部模块”(仅在我的主机上定义,未部署在任何地方)。我有以下结构:
.
├── function
│ ├── package1
│ │ └── file1.go
│ ├── function.go
│ ├── go.mod
│ └── go.sum
└── common
├── common.go
├── go.mod
└── go.sum
我的function.go
(我的云功能的入口点)的内容:
package function
import (
"github.com/.../function/package1"
"github.com/.../common"
)
// use functions from package1 and common
主题已在此处单独介绍:
第一篇文章表示使用 vendoring 和 excludego.mod
并go.sum
从源代码中使用common
模块,而第二篇文章表示包含go.mod
和go.sum
不使用 vendoring 以便能够使用子包。
但我想知道:是否可以同时使用两者?或者供应商依赖项需要将所有.go
源文件放在同一个目录中(没有子包)?同样,使用子包需要不使用供应商?如何构建我的代码以避免这些限制,或者我能做什么(在common
某处部署模块,...)?
此外,有关 Go Cloud Functions 的“指定依赖项”的文档指出:
Go 中的 Cloud Functions 必须通过带有 go.mod 文件的 Go 模块或供应商目录提供所有依赖项。您的函数不能同时使用Go 模块和供应商目录指定依赖项。