首页 > 解决方案 > 如何为 appengine Go 使用与 app.yaml 不同的文件夹中的主包?

问题描述

我正在尝试将 Go 应用程序上传到 appegnine Go 1.12 运行时。我的主要 pkg 在一个cmd文件夹下,如图所示https://cloud.google.com/appengine/docs/standard/go112/config/appref#runtime_and_app_elements

但是,如果我尝试官方文档中概述的任何方法,我会收到以下错误:

ERROR: (gcloud.app.deploy) An error occurred while parsing file: [/home/tamal/go/src/kmodules.xyz/resource-metadata/app.yaml]
Unable to assign value './cmd/resource-metadata-server' to attribute 'main':
Value './cmd/resource-metadata-server' for main does not match expression '^(?:[\w.\\\/:]+)$'
  in "/home/tamal/go/src/kmodules.xyz/resource-metadata/app.yaml", line 3, column 7
ERROR: (gcloud.app.deploy) An error occurred while parsing file: [/home/tamal/go/src/kmodules.xyz/resource-metadata/app.yaml]
Unable to assign value 'kmodules.xyz/resource-metadata/cmd/resource-metadata-server' to attribute 'main':
Value 'kmodules.xyz/resource-metadata/cmd/resource-metadata-server' for main does not match expression '^(?:[\w.\\\/:]+)$'
  in "/home/tamal/go/src/kmodules.xyz/resource-metadata/app.yaml", line 2, column 7

问题似乎是我不允许在 app.yaml-的条目中使用。main这是为什么?这可以解决吗?

我在用

$ gcloud version
Google Cloud SDK 257.0.0
app-engine-go 
app-engine-python 1.9.86
beta 2019.05.17
bq 2.0.46
cloud-datastore-emulator 2.1.0
core 2019.08.02
gsutil 4.41

标签: google-app-enginegogoogle-app-engine-go

解决方案


错误代码表明传递给 main 的字符串必须与 regex 匹配^(?:[\w.\\\/:]+)$。这意味着提供的字符串必须匹配字符集中的任何字符,例如/w可以是任何单词字符(字母数字和下划线),.匹配.字符,\\匹配\字符,\/匹配/字符和:匹配:字符。

请注意,字符集中没有 a-允许您将-字符包含在 main 中提供的字符串中,同时尊重它所限制的正则表达式。因此,只要此约束-在字符集中排除,main 属性中的预期字符串应该是-在尊重表达式其余部分的同时也排除的字符串。


推荐阅读