Пользовательский домен функций Firebase с одностраничным приложением - PullRequest
0 голосов
/ 20 февраля 2019

У меня есть одностраничное приложение, размещенное в Firebase.

У меня также есть 3 функции Firebase (контакты, планы, функции), к которым приложение и внешние источники отправляют запросы.

Мое приложение имеетпользовательский домен, к которому я хотел бы получить доступ к своим функциям через.

Это мой текущий firebase.json config

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

Так что в настоящее время весь трафик идет в мое приложение, и маршрутизация обрабатываетсячерез мой СПА.Доступ к моим функциям в настоящее время должен осуществляться через URL-адрес cloudfunctions.net, который не является идеальным.

Как добавить записи перезаписи URL-адресов в эту конфигурацию, чтобы мои функции были доступны через мой пользовательский домен и мое одностраничное приложение обрабатывает остальные маршруты?

Я попробовал следующее для конечной точки features:

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

Где в моих функциях index.js Iесть:

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

Но я получаю 404 Cannot GET /features/123 в качестве ответа?

1 Ответ

0 голосов
/ 20 февраля 2019

Несколько вещей:

  1. Убедитесь, что ваш обработчик featuresApi соответствует полному URL-адресу (например, /features/123, а не /123).Firebase Hosting пересылает полный путь к функции, а не только часть **.
  2. Перезаписи разрешаются по порядку, поэтому нет необходимости делать !/features/** для вашего второго источника перезаписи.** должно быть в порядке, поскольку, если оно совпадает с /features/**, оно уже будет соответствовать первому перезаписи и разрешению функции.

На основании сообщения об ошибке представляется вероятным, что (1) являетсявиновник здесь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...