google-app-engine - 如何为 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
解决方案
错误代码表明传递给 main 的字符串必须与 regex 匹配^(?:[\w.\\\/:]+)$
。这意味着提供的字符串必须匹配字符集中的任何字符,例如/w
可以是任何单词字符(字母数字和下划线),.
匹配.
字符,\\
匹配\
字符,\/
匹配/
字符和:
匹配:
字符。
请注意,字符集中没有 a-
允许您将-
字符包含在 main 中提供的字符串中,同时尊重它所限制的正则表达式。因此,只要此约束-
在字符集中排除,main 属性中的预期字符串应该是-
在尊重表达式其余部分的同时也排除的字符串。
推荐阅读
- powershell - 使用 Set-AdfsRelyingPartyTrust PowerSell 命令从 ADFS 依赖方删除注释?
- angularjs - Angular js数据表使用
- c# - 组合迭代器
- rxjs - 在 RxJS 6 中,如果捕获到错误,我如何跳过流的 tap() 部分
- java - 在不同机器中嵌入 Redis
- three.js - 三个 JS - 渲染 camera.layers(0) 时保留来自 camera.layers(1) 的对象深度
- visual-studio-code - 为什么 vscode 的命令面板不能显示所有命令?
- python - 赋值前引用的局部变量“temp”
- ruby - 存根请求的转义字符
- rx-java - 反应式扩展:修改处理缓慢的现有流