我有一个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
答案 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。或者,修改您的项目以在子目录中包含所有必需的帮助程序包。