如何在 Google Cloud Functions with Go 中使用供应商中的本地存储库

How can I use a local repository in the vendor in Google Cloud Functions with Go

我正在尝试部署一个用 Go 编写的 Google Cloud Function。

通过一些研究,我发现 vendor 文件比 go.mod 更受欢迎,所以我出售我使用的所有东西(包括一些本地依赖项)并忽略 go.mod/sum 中的文件.gcloudignore 文件。

问题是在尝试部署后,出现以下错误:

go: nimbus@v0.0.0-00010101000000-000000000000: parsing /nimbus/go.mod: open /nimbus/go.mod: no such file or directory; Error ID: 03a1e2f7

nimbus 是我的本地依赖项,它具有以下结构:

我的函数存储库具有以下结构:

我的 go.mod 文件是:

module my_function

go 1.13

require nimbus v0.0.0-00010101000000-000000000000

replace nimbus => ../../../nimbus

我已经尝试过此解决方案 。但这并没有解决我的问题。

我已经尝试了所有方法来解决这个问题,但似乎没有任何效果。

If you have a go.mod file and a vendor directory, the vendor directory will be ignored when you deploy your function.

https://cloud.google.com/functions/docs/writing/specifying-dependencies-go

我在 Go 中部署 GCP 功能时使用了模块。没有遇到任何问题。但我不能谈论使用 vendor/ 的偏好。它应该可以工作,只是没有 go.mod 文件。

原来问题很复杂,我希望Google找到解决方法asp。

通过使用 Cloud Build 部署我的函数,它会从我的存储库中读取 Google Source,但是,通过从那里读取它会绕过 .gcloudignore 文件并同时部署 go。mod/sum 文件和供应商目录与我的本地代码。

所述:

If you have a go.mod file and a vendor directory, the vendor directory will be ignored when you deploy your function.

所以会因为我的 go.mod 找不到本地存储库而发生错误。

我的解决方案是重命名我的 go.mod/sum 文件,这样它就不会被考虑: