Firebase功能自定义域与单页应用程序

问题描述 投票:1回答:1

我有一个Firebase托管的单页应用。

我还有应用程序和外部资源请求的3个Firebase功能(联系人,计划,功能)。

我的应用有一个自定义域名,我想通过它来访问我的功能。

这是我目前的firebase.json配置

{
  "hosting": {
    "public": "www",
    "ignore": ["firebase.json", "**/.*", "**/node_modules/**"],
    "rewrites": [
      {
        "source": "**",
        "destination": "/index.html"
      }
    ]
  }
}

所以目前所有流量都会转到我的应用程序,路由是通过我的SPA处理的。目前访问我的功能必须通过cloudfunctions.net URL完成,这不是理想的。

如何在此配置中添加URL重写条目,以便可以通过我的自定义域访问我的功能,我的单页应用程序可以处理其余的路由?

我为features端点尝试了以下内容:

"rewrites": [
  {
    "source": "/features/**",
    "function": "features"
  },
  {
    "source": "!/features/**",
    "destination": "/index.html"
  }
]

在我的职能index.js我有:

...
exports.plans = functions.https.onRequest(plansApi);
exports.features = functions.https.onRequest(featuresApi);
exports.contact = functions.https.onRequest(contactApi);

但我收到404 Cannot GET /features/123作为回应?

firebase google-cloud-functions single-page-application firebase-hosting
1个回答
3
投票

一些东西:

  1. 确保您的featuresApi处理程序与完整的URL路径匹配(例如/features/123 not /123)。 Firebase Hosting转发功能的完整路径,而不仅仅是**部分。
  2. 重写按顺序解析,因此不需要为第二次重写源执行!/features/****应该没问题,因为如果它匹配/features/**它将已经匹配第一次重写并解析为该函数。

基于错误消息,似乎(1)是罪魁祸首。

© www.soinside.com 2019 - 2024. All rights reserved.