在Google App Engine中找不到Angular 6路由

时间:2018-11-15 09:13:41

标签: angular google-app-engine

我在Google App Engine上部署了Angular 6应用程序。 app.yaml配置看起来像这样:

runtime: python27
api_version: 1
threadsafe: true

skip_files:
- (?!^dist)

handlers:
- url: /
  static_files: dist/index.html
  upload: dist/index.html

- url: /(.*)
  static_files: dist/\1
  upload: dist/(.*)

一切正常,我可以访问所有内容,直到在路线上重新加载页面或通过路线直接访问网站(例如,myapp.com / route)。这样,我会收到一条The requested URL /route was not found on this server错误消息。

3 个答案:

答案 0 :(得分:1)

已编译和部署的Angular应用程序包含单个index.html以及一些资产,例如JavaScript文件。索引文件包含所有JavaScript文件。路由是基于Angulars Router虚拟地执行的,而不是基于实际文件。因此,您的配置无法解析诸如/route之类的路由。除了资产之外,您还必须将所有请求重定向/重写到index.html,以便通过Angular路由处理这些请求。

runtime: python27
api_version: 1
threadsafe: true

skip_files:
  - (?!^dist)

handlers:
  - url: /(.*\.(js|css|svg|png)(|\.map))$
  static_files: dist/\1
  upload: dist/(.*)(|\.map)
  - url: /.*
  static_files: dist/index.html
  upload: dist/.*

如果要提供的文件更多,请调整正则表达式。

答案 1 :(得分:0)

更新烧瓶服务器,使“ /”和“ / route”都返回您的角度index.html。这样,当GAE / flask返回内容时,angular将处理路由以显示正确的内容。

答案 2 :(得分:-1)

页面刷新显示404 Not Found的原因是所有Angular2路由都应通过index.html文件提供。

您可以通过添加具有以下内容的 .htaccess 文件(在index.html所在的目录中)来解决此问题。

ElementRef