小编典典

尝试使用Go模块在Go 1.11中部署Google Cloud功能时出错

go

我在尝试使用Go模块在Go 1.11中部署Google云功能时遇到问题。我的代码结构如下GOPATH

└── example
    ├── models
    │   ├── go.mod
    │   └── models.go
    └── load
        ├── fn.go
        ├── go.mod
        ├── go.sum
        └── vendor
            └── ....

load / go.mod如下所示:

module github.com/example/load

require (
    github.com/example/models v0.0.0
)

replace github.com/example/models => ../models

当我尝试使用命令部署功能时

gcloud functions deploy load-data --entry-point GCSNewFileTrigger --runtime go111 --trigger-resource new_data --trigger-event google.storage.object.finalize

我收到以下错误:

Deploying function (may take a while - up to 2 minutes)...failed.                                                                                                                                                                     
ERROR: (gcloud.functions.deploy) OperationError: code=3, message=Build failed: go: parsing /models/go.mod: open /models/go.mod: no such file or directory
go: error loading module requirements

命令go mod vendorgo mod verify在本地成功运行,我可以modelsload


阅读 290

收藏
2020-07-02

共1个答案

小编典典

与制造商相比,制造商更喜欢使用模块。如果有go.mod,将使用模块。当您上载函数时,它仅包含函数所在目录的目录,而不包含上一级目录。因此,当有一个go.mod并且您有一个向上一级的替换指令时,它将不起作用。

解决方案是针对供应商,而不是上载go.mod/
go.sum文件。使用时gcloud,您可以创建一个.gcloudignore文件来为您执行此操作。有关更多详细信息,请参见https://cloud.google.com/functions/docs/concepts/go-
runtime#specifying_dependencies。

免责声明:我在Google和此产品上工作。

2020-07-02