如何在GAE中使用app.yaml为STATIC FILES工作?

时间:2018-04-29 21:09:41

标签: javascript python google-app-engine create-react-app app.yaml

我有一个create-react-app Build目录,把它放在Cloud Storage上,还添加了一个app.yaml文件:

runtime: python27
api_version: 1
threadsafe: true

handlers:
- url: /
  static_files: build/index.html
  upload: build/index.html
  secure: always
- url: /
  static_dir: build

托管在app引擎上,瞧瞧 - 它的确有效!

但是,当 example-domain.com / 有效时, example-domain.com/abc 不会。我得到错误:找不到 在此服务器上找不到请求的URL / abc。

我尝试在处理程序网址中用“/.*”替换“/”,但结果返回一个空白页:(。

有什么建议吗? :)

2 个答案:

答案 0 :(得分:1)

找到解决方案。当我使用static_dir时,会出现每个以该处理程序开头的url url 。鉴于每个静态文件都在build / static目录中,我只使用 url:/ static 来处理需要从该文件夹处理的任何内容。

Create-react-app会在build dir中创建几个.json文件,所以我只是单独指出它们,因为只有少数。

完成所有这些操作后,我可以使用 url:/.*来暗示任何其他网址应该只指向index.html页面。

这有效:(第一个处理程序可能是多余的)

  runtime: python27
   api_version: 1
   threadsafe: true

   handlers:
   - url: /
     static_files: build/index.html
     upload: build/index.html
     secure: always
   - url: /static
     static_dir: build/static
   - url: /manifest.json
     static_files: build/manifest.json
     upload: build/manifest.json
   - url: /asset-manifest.json
     static_files: build/asset-manifest.json
     upload: build/asset-manifest.json
   - url: /service-worker.json
     static_files: build/service-worker.json
     upload: build/service-worker.json
   - url: /pageIcon.png
     static_files: build/pageIcon.png
     upload: build/pageIcon.png
   - url: /.*
     static_files: build/index.html
     upload: build/index.html
     secure: always

答案 1 :(得分:0)

首先,您有/的重复处理程序。你永远不会到达第二个处理程序。

您可以在处理程序中使用某些正则表达式提供您想要的任何类型的静态文件,如下所示:

- url: /(.*\.(ico|jpg|jpeg|png|gif|woff|ttf|otf|eot|svg|html))$
  static_files: build/\1
  upload: build/.*\.(ico|jpg|jpeg|png|gif|woff|ttf|otf|eot|svg|html)$
  secure: always