如何使用模块替换云功能中的功能

时间:2019-01-24 23:29:58

标签: go google-cloud-functions go-modules

我有一个Google Cloud函数,它是存储库中的子目录。它使用设置菜单中的“带源代码的目录”选项。我在部署时不断收到此错误:

Deployment failure:
Build failed: go: parsing /utils/pubsub/go.mod: open /utils/pubsub/go.mod: no such file or directory
go: error loading module requirements

我假设GCF不会将整个目录上传到实例,而是仅上传文件夹?这破坏了Go模块的替换功能。我在做错什么吗?

链接到仓库:https://github.com/FreekingDean/jeffbotgo/tree/5d735cc/slackevent

2 个答案:

答案 0 :(得分:1)

我今天有同样的问题。

第8次阅读文档时,我在“供应商目录”标题下看到一个警告框。

  

警告:如果您的项目同时具有go.mod文件和供应商目录   在您项目的根目录下,供应商目录将被忽略   在部署期间。您必须使用.gcloudignore文件来忽略   go.mod文件,以确保使用您的供应商目录   在部署过程中。

因此,基本上,一旦我使用go.mod添加了.gcloudignore文件(也将添加go.sum),一切都将正常工作。因此,我想如果您有go.mod文件,云功能将尝试获取依赖关系,而不是使用供应商文件夹中上载的依赖关系。 我只是想在这里很难。

答案 1 :(得分:0)

我在Google和此产品上工作。

仅上载运行df['value'] = df['value'].fillna(method='ffill') df = df.sort_values(by=['name', 'date']) df['actual'] = df.groupby(['name'])['value'].transform(lambda x: x.diff()) 的目录。除了将当前目录压缩并上传之外,没有暂存步骤。

值得注意的是,与供应商相比,制造商更喜欢使用模块。如果有gcloud,将使用模块。当您上载函数时,它仅包含函数所在目录的根目录,而不包含上一级目录。因此,当有一个go.mod且您有一个指向上一级的replace指令时,它将不起作用。

目前采用这种布局的解决方案是向供应商提供,而不要上传go.mod / go.mod文件。使用go.sum时,您可以创建一个gcloud文件来为您执行此操作。有关更多详细信息,请参见aggregating function。或者,修改您的项目以在子目录中包含所有必需的帮助程序包。