将Nuxt JS SSR应用程序部署到Google Cloud App Engine Standard



我无法将我的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_classF2降低到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 errorserver error很难找到原因。在云日志记录中查找日志,或单击此链接直接转到控制台。确保您使用的是GAE 应用程序,>您的服务名称>应用引擎版本。开始查找访问应用程序时出现的错误,并查找错误原因说明。如果找不到任何日志,请尝试切换到所有日志。

请注意,它还要求已启用以下 API:

  1. 应用引擎接口
  2. 计算引擎接口
  3. 云构建接口

其他故障排除,请仔细检查应用程序上的侦听端口。

请检查应用程序日志以确保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=>停用应用程序字段中检查您的应用程序是否已启用。

相关内容

  • 没有找到相关文章

最新更新