在app.yaml中定义静态目录会使应用崩溃

时间:2018-08-17 18:59:44

标签: google-app-engine app.yaml

我在GAE standard(运行node)上遇到了一个奇怪的问题,更确切地说是下面的app.yaml

runtime: nodejs8

# Environment variables
env_variables:
  GOOGLE_CLOUD_PROJECT: '...'

# Static directories and files
handlers:
- url: /static
  static_dir: public

没有handlers部分,一切都像个魅力:我的应用程序已部署并正常运行。请注意,size是4.8 MB(版本1-0-43)。

enter image description here

但是,具有部分handlers,我的应用无法正常工作:4xx错误,并且应用size的大小为324 KB(版本{{ 1}})。

1-0-43部分的唯一目的是定义一个handlers来服务静态资产(CSS,JS,图像...)。

有任何线索吗?谢谢。

2 个答案:

答案 0 :(得分:1)

当您添加billing information处理程序定义时,static_dir子目录的全部内容将不再(默认)与您的应用程序代码一起上传(很可能解释了应用程序大小的差异)。而是将其上传到其他位置,以由GAE下文直接提供,请参见How to serve static files in AppEngine Standard and nodejs

听起来您的应用可能还需要其中一些文件。在这种情况下,最简单的解决方案是在静态定义中添加public标志,从而使该目录在静态内容位置以及与您的应用程序代码一起上传,请参见GAE: file_get_contents() and static files

为加快部署速度,还可以尝试将静态内容分为2:应用程序代码不需要的一部分,没有application_readable部署的部分(因此也没有随应用程序代码一起上传,部署得更快)和标志。如果不太麻烦。

答案 1 :(得分:0)

您能否尝试将static_dir从“ public”更改为“ static”。因为url和static_dir通常位于同一位置。请尝试,让我知道。干杯!

    # Static directories and files
      handlers:
      - url: /static
        static_dir: static