我希望将我的 Angular 应用部署到 Google Cloud,包括以下内容:
ng build
我尝试将静态文件部署到 Google Cloud Storage 存储桶,并且可以通过设置“网站配置”->“索引(主)页面后缀”来提供 index.html。但是,我没有看到仅使用云存储将其他路由(例如 site.example.com/home )重定向到 index.html 的方法。
我研究过的其他事情包括:
TL;DR 我需要有关 Angular 的服务器端 URL 重写和最小化成本的帮助。
非常感谢您的帮助!
只要是静态文件,我强烈建议使用App Engine标准。您免费提供您的网站(无服务器费用,免费提供静态文件),并且您每天有高达 1Gb 的免费出站流量!
此外,您可以使用自定义域将您的 DNS 名称插入 App Engine 之上,并让 Google Cloud 管理 SSL 证书。
毫无疑问,这是托管静态网站最简单、最便宜的解决方案。
我尚未成功地正确设置 App Engine 实例来静态服务我的 Angular
dist
文件,并将路由重定向到具有根 index.html
的非静态文件,而不必显式列出所有可能的路由。
例如我当前的
app.yaml
文件
# --- NOT RECOMMNENDED: need to explicitly list all Angular routes ---
runtime: nodejs22
handlers:
- url: /
static_files: dist/index.html
upload: dist/index.html
- url: /(routeA|routeB|routeC).*
static_files: dist/index.html
upload: dist/index.html
- url: /
static_dir: dist
其中,我无法以有用的方式使用
error_handlers
。
我的解决方案是使用 Firebase 托管部署我的 SPA。交互式
firebase init
命令就像一个魅力,尤其是在询问 将所有 URL 重写为 index.html
时
=== Hosting Setup
Your public directory is the folder (relative to your project directory) that
will contain Hosting assets to be uploaded with firebase deploy. If you
have a build process for your assets, use your build's output directory.
? What do you want to use as your public directory? dist
? Configure as a single-page app (rewrite all urls to /index.html)? Yes
? Set up automatic builds and deploys with GitHub? No
? File dist/index.html already exists. Overwrite? No
对此替代方案有什么想法或者我应该如何配置我的
app.yaml
?