我很难通过App Engine使用Google Cloud Platform正确部署任何东西。
app.yaml
runtime: nodejs8
#env: flex
beta_settings:
cloud_sql_instances: my-project:us-central1:my-db
我正在使用以下cmd进行部署:
gcloud app deploy --project=my-project
相对于灵活环境,我更喜欢使用标准环境,因此我注释掉了env:flex。部署后,我将收到一个错误消息,指出nodejs不是有效的运行时,因此我将其仅从nodejs更改为nodejs8。我可以使用以下方法成功部署到灵活的环境中:
env: flex
runtime: nodejs
但是我不能使用:
runtime: nodejs8
错误是:
Beginning deployment of service [default]...
╔════════════════════════════════════════════════════════════╗
╠═ Uploading 0 files to Google Cloud Storage ═╣
╚════════════════════════════════════════════════════════════╝
File upload done.
Updating service [default]...failed.
ERROR: (gcloud.app.deploy) Error Response: [13] Error importing container
images.
答案 0 :(得分:3)
App Engine Flex中的默认Node.js版本取自最新的LTS(长期支持)版本。如果要指定版本,则可以使用引擎字段在应用程序的package.json文件中进行指定。
{
"engines": {
"node": "8.x"
}
}
在此链接中,您可以找到有关如何在App Engine Flex环境中更改Node.js版本的更多详细说明
答案 1 :(得分:2)
标准和灵活的环境彼此之间有很大的不同,通常不可能在一个或另一个上任意部署完全相同的代码,需要进行env: flex
以外的更改。
是的,node.js确实是这种差异最少的语言,但它们仍然存在。至少到目前为止(标准的env node.js产品还很新)。其他语言也有很多差异,例如,仅查看python App Engine Flexible Environment for Users of App Engine Standard Environment指南
对于node.js,runtime
只是这些区别之一。
来自标准环境app.yaml Configuration File:
对于Node.js,要求
app.yaml
仅包含runtime: nodejs8
条目
来自灵活的环境app.yaml Configuration File:
运行时:nodejs
此设置是必需的。它是App Engine语言的名称 此应用程序使用的运行时。要指定Node.js,请使用
nodejs
。