Перезапись Firebase Hosting не перенаправляет на Google Cloud Run

Я настраиваю перенаправление (перезапись) на своем хостинге firebase, чтобы я мог вызывать API, работающий из облака Google, запускать здесь.

Я попытался изменить строку перезаписи с "/api/**" (должен перехватить все на страницу page.com/api/** и отправить ее в функцию). удалил index.html и заменил его на "**", чтобы захватить ВСЕ пути, включая index. Пока ничего не сработало.

Мой хостинг firebase.json настроен так, что-то не так с этим?

{
  "hosting": {
    "public": "dist/public",
    "ignore": ["firebase.json", "**.*", "**/node_modules/**"],
    "rewrites": [
      {
        "source": "**",
        "run": {
          "serviceId": "next-js-base-api",
          "region": "us-central1"
        }
      }
    ]
  }
}

Я также пробовал с обычными редиректами на другую страницу, это не работает, что определяет, когда настройки firebase.json начинают распространяться и работать?

Обновлять

Я попытался запустить эмулятор хостинга и с модифицированной перезаписью "source": "/api/**", что дало следующие результаты. Переход к /api возвращает без сбоя (без перенаправления) с выводом в браузере cannot GET /api переход к api/wkapi (подкаталог, который перехватывается конечной точкой API) возвращает unexpected error в браузере и

Error: Unable to find a matching rewriter for {"source":"/api/**","run":{"serviceId":"next-js-base-api","region":"us-central1"}}

в консоли.

У меня есть редирект Cloud Run на **, который работает нормально. Пожалуйста, отредактируйте вопрос, чтобы указать, что на самом деле происходит, чего не ожидается (будьте конкретны, не говорите просто «это не работает»). Также попробуйте запустить эмулятор Firebase Hosting с помощью firebase serve --only hosting и посмотрите на результат. Перезапись в Cloud run должна появиться там.

Doug Stevenson 20.04.2019 17:52

Привет Дуг, спасибо за ответ, извините за то, что не был слишком конкретным. Я попытался запустить эмулятор хостинга и с модифицированной перезаписью "source": "/api/**", что дало следующие результаты. переход к /api возвращает без сбоя (без перенаправления) с выводом в браузере cannot GET /api переход к api/wkapi (подкаталог, который перехватывается конечной точкой API) возвращает непредвиденную ошибку в браузере и Error: Unable to find a matching rewriter for {"source":"/api/**","run":{"serviceId":"next-js-base-api","r‌​egion":"us-central1"‌​}} в консоли. Я не уверен.

Drew Hutton 21.04.2019 05:09

Привет, Дрю, я сделал тот же пример helloworld, и тестируя с помощью firebase serve --only hosting, я вижу, что триггер запущен: [hosting] Cloud Run rewrite {"source": "**", "run": {"serviceId ":" helloworld "," region ":" us-central1 "}} triggered. Однако в браузере отображается только Can not GET / helloworld вместо --Hello World! -

Darry Morales 25.04.2019 01:05
Интеграция Angular - Firebase Analytics
Интеграция Angular - Firebase Analytics
Узнайте, как настроить Firebase Analytics и отслеживать поведение пользователей в вашем приложении Angular.
10
3
2 022
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

Ответ принят как подходящий

Обязательно обновите Firebase CLI до последней версии, выполнив:

npm install -g firebase-tools@latest

Это позволит вам переписать экземпляры для запуска в облаке, как вы пытаетесь это сделать.

Думать, что обновление инструментов Firebase не приходило мне в голову при устранении неполадок. Полный ответ представлял собой комбинацию этого и путей перезаписи, которые выглядят как захват как /api/**, так и /api/.

Drew Hutton 06.05.2019 05:11

@DrewHutton, не могли бы вы уточнить «пути перезаписи, которые выглядят как захват /api/** и /api/». Вам нужно было добавить два оператора перезаписи... любой шанс, что вы можете просто показать, как в итоге выглядели ваши операторы перезаписи. (у меня такая же проблема)

Safa Alai 15.09.2019 01:52

У меня это работает: 1) установка источника на «**» 2) удаление index.html из общедоступного каталога

user5269602 19.12.2019 20:19

На самом деле, я запустил это только что и, просматривая журналы развернутого облачного контейнера helloworld, обнаружил, что custom-domain/helloworld на самом деле сопоставляется с container-domain/helloworld, а не просто сопоставляется с container-domain/. Чтобы исправить это, мне пришлось добавить дополнительное правило app.get в исходную программу Node.js:

app.get('/helloworld', (req, res) => {

А затем сработал вызов custom-domain/helloworld.

Это было то, что решило проблему для меня. Хостинг углового приложения в Firebase, но с микросервисом в cloudRun. Если источником перезаписи является /api, у cloudRun должен быть маршрут /api для получения.

ASomN 01.09.2020 22:54

@ASomN, не могли бы вы показать свой firebase.json с перезаписью? У меня такое же угловое приложение с /api в облаке. Когда я открываю свой домен URL, например. domain.com/api загружает облачный запуск, когда я открываю угловое приложение, например. domain.com/agnet угловая загрузка приложения. Однако, когда я снова открываю domain.com/api, он не работает, загружая облачный запуск, но приложение angular.

aponski 08.12.2021 10:20

"rewrites": [ { "source": "/api/**", "run": { "serviceId": "api", "region": "europe-west1" } }, { "source": "* *", "destination": "/index.html" } ]

ASomN 31.12.2021 11:10

Если все приведенные выше ответы не помогли вам, исправление, которое сработало для меня, было:

  • Посмотрите в общедоступном каталоге в вашем проекте, который использует хостинг firebase.
  • Удалите файл index.html, созданный firebase при прохождении шаги инициализации firebase.

После удаления сгенерированного файла index.html он смог запустить мои облачные контейнеры с перезаписью.

Другие вопросы по теме