Google Cloud - Angular - 在此服务器上找不到请求的 URL /

Google Cloud - Angular - The requested URL / was not found on this server

提问人:Julian 提问时间:11/18/2023 最后编辑:PuteriJulian 更新时间:11/22/2023 访问量:25

问:

错误:未找到 在此服务器上找不到请求的 URL/。

部署在谷歌云上的名为 angular-weather 的 Angular 项目:在此处输入图像描述

正如你所看到的,它有app.yaml文件,如下所示:

runtime: nodejs20
service: weather-front

handlers:
  - url: /*
    static_files: dist/angular-weather/index.html
    upload: dist/angular-weather/index.html

  - url: /(.*\.(gif|png|ico|jpg|css|js)(|\.map))$
    static_files: dist/angular-weather/\1
    upload: dist/angular-weather/(.*\.(gif|png|ico|jpg|css|js)(|\.map))$

执行ng build和gcloud app deploy命令后,我打开已部署的应用程序,它找不到索引或徽标(.ico)。

节点.js 角度 云平台 谷歌应用引擎

评论


答:

0赞 Mike 11/22/2023 #1

有几件事要记住......

如果你的第一个处理程序是贪婪的,并且匹配任何东西,那么你的第二个处理程序将永远不会发挥作用。

如果你想要那些确切的处理程序,你需要先执行第二个处理程序,所以它会接受与这些特定模式匹配的任何内容,然后通用处理程序将(几乎)接受剩下的任何内容。 但是,对于这种类型的 Angular 部署,我建议使用更干净/更简单的结构。

考虑为裸根目录放置一个处理程序,然后按原样传递所有其他引用。

请尝试以下操作:

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

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

所以

https://my.domain.com/ --> 索引.html [第一个处理程序]

https://my.domain.com/index.html --> 索引.html [第二个处理程序]

https://my.domain.com/foo/bar.png --> foo/bar.png [第二个处理程序]