我无法将我的Nuxt JS SSR应用程序部署到Google Cloud App Engine。 该应用能够在开发和生产模式下本地运行。
Nuxt JS文档建议按如下方式使用app.yaml
:
runtime: nodejs10
instance_class: F2
handlers:
- url: /_nuxt
static_dir: .nuxt/dist/client
secure: always
- url: /(.*.(gif|png|jpg|ico|txt))$
static_files: static/1
upload: static/.*.(gif|png|jpg|ico|txt)$
secure: always
- url: /.*
script: auto
secure: always
env_variables:
HOST: '0.0.0.0'
但是,Google Cloud 文档建议使用nodejs14
以及存储桶名称的env_variables
,我认为该名称与 Google App Engine 自动创建的暂存存储桶的名称相同。
runtime: nodejs14 # or another supported version
instance_class: F2
env_variables:
BUCKET_NAME: "staging.myapp.appspot.com"
handlers:
- url: /_nuxt
static_dir: .nuxt/dist/client
secure: always
- url: /(.*.(gif|png|jpg|ico|txt))$
static_files: static/1
upload: static/.*.(gif|png|jpg|ico|txt)$
secure: always
- url: /.*
script: auto
secure: always
使用这两种app.yaml
配置进行部署时,它会成功部署到Google App Engine,但是在访问实例的URL时(myapp.uk.r.appspot.com),我遇到了如下错误:
Error: Server Error
The server encountered an error and could not complete your request.
Please try again in 30 seconds.
访问staging.myapp.appspot.com时,我遇到了从通用Google 404错误到证书错误的一系列错误。 有没有人知道将Nuxt JS SSR应用程序部署到Google Cloud App Engine的正确app.yaml
配置?
有没有人知道将Nuxt JS SSR应用程序部署到Google Cloud App Engine的正确app.yaml配置?
我复制了您的案例,并使用您提供的app.yaml
配置在 App Engine 中部署了 Nuxt JS 应用程序的基本教程部署。即使我将instance_class
从F2
降低到F1
,两种配置也都可以正常工作,它仍然运行良好。
截至目前,nodejs 的推荐版本nodejs14
但即使版本nodejs10
,该应用程序仍在 App Engine Standard 中运行。env_variables
是可选的,您可以在app.yaml
文件中定义环境变量以使其可用或在应用中使用它。
错误:
Error: Server Error
The server encountered an error and could not complete your request.
Please try again in 30 seconds.
500 error
或server error
很难找到原因。在云日志记录中查找日志,或单击此链接直接转到控制台。确保您使用的是GAE 应用程序,>您的服务名称>应用引擎版本。开始查找访问应用程序时出现的错误,并查找错误原因说明。如果找不到任何日志,请尝试切换到所有日志。
请注意,它还要求已启用以下 API:
- 应用引擎接口
- 计算引擎接口
- 云构建接口
其他故障排除,请仔细检查应用程序上的侦听端口。
请检查应用程序日志以确保GAE
上发生了什么
gcloud app logs tail
然后也试试我的 yaml 文件来获取 nuxt SSR:
runtime: nodejs14
service: nuxt
instance_class: F1
handlers:
- url: /_nuxt
static_dir: .nuxt/dist/client
secure: always
- url: /(.*.(gif|png|jpg|ico|txt))$
static_files: static/1
upload: static/.*.(gif|png|jpg|ico|txt)$
secure: always
- url: /.*
script: auto
secure: always
解决了这个问题,这似乎是关于在nuxt.config中指定不同的服务器端口的疏忽.js 8000而不是默认值。
通过使用查看日志:
gcloud app logs tail
这个错误变得很明显:
✖ Nuxt Fatal Error
Error: listen EADDRNOTAVAIL: address not available *.*.*.*:8000
尝试以下配置:
runtime: nodejs12
instance_class: F2
handlers:
- url: /_nuxt
static_dir: .nuxt/dist/client
secure: always
- url: /(.*.(gif|png|jpg|ico|txt))$
static_files: static/1
upload: static/.*.(gif|png|jpg|ico|txt)$
secure: always
- url: /.*
script: auto
secure: always
env_variables:
HOST: '0.0.0.0'
我在App Engine中运行了一个nuxt应用程序,这是我的Yaml配置。
我建议您在 GCP/App Engine/Configuration=>停用应用程序字段中检查您的应用程序是否已启用。