将 Go 子包部署到 Google Cloud Functions 失败

ant*_*opp 2 go google-cloud-functions

我正在尝试将一个函数部署到 GCF,但无论我如何尝试,它都失败了。这是每次返回的错误:

Build failed: 2021/03/02 18:02:46 Unable to extract package name: unable to find Go package in /workspace/serverless_function_source_code.
exit status 1; Error ID: aba1aa6a
Run Code Online (Sandbox Code Playgroud)

我在这里阅读了一些答案,并尝试按照说明解决问题,但我一直遇到此错误,此时我迷失了方向。

我的项目结构如下:

.
|--function.go
|--go.mod
|--go.sum
|--subpackage
`        |--subpackage.go
Run Code Online (Sandbox Code Playgroud)

我的主要功能使用 subpackage.go 中的一些内容,并且 function.go 导入是:

Build failed: 2021/03/02 18:02:46 Unable to extract package name: unable to find Go package in /workspace/serverless_function_source_code.
exit status 1; Error ID: aba1aa6a
Run Code Online (Sandbox Code Playgroud)

然后是 go.mod 文件:

module modname

go 1.13

require (
    // remote imports //

    modname/subpackage
)
Run Code Online (Sandbox Code Playgroud)

子包被初始化为package subpackage,我认为这就是 GCF 文档所说的。

在 function.go 中,我有一个名为 Start 的函数,我将其指定为设置中的入口点。我迷路了,我不知道如何解决这个问题。

ant*_*opp 7

好的,找到问题了。如果您遇到我的问题,请忽略我的问题中的 go.mod 文件,因为其他答案正确地建议您不应包含本地软件包。

但我的问题不是这个。我正在压缩并上传包含该项目的文件夹,而不是文件夹内的文件。GCF 解压了 .zip 并找到了另一个包含该项目的文件夹。

你的 go.mod 和 function.go 文件必须位于第一级。希望这能为其他人节省时间。