Я настраиваю перенаправление (перезапись) на своем хостинге 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"}}
в консоли.
Привет Дуг, спасибо за ответ, извините за то, что не был слишком конкретным. Я попытался запустить эмулятор хостинга и с модифицированной перезаписью "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","region":"us-central1"}} в консоли. Я не уверен.
Привет, Дрю, я сделал тот же пример helloworld, и тестируя с помощью firebase serve --only hosting, я вижу, что триггер запущен: [hosting] Cloud Run rewrite {"source": "**", "run": {"serviceId ":" helloworld "," region ":" us-central1 "}} triggered. Однако в браузере отображается только Can not GET / helloworld вместо --Hello World! -

Обязательно обновите Firebase CLI до последней версии, выполнив:
npm install -g firebase-tools@latest
Это позволит вам переписать экземпляры для запуска в облаке, как вы пытаетесь это сделать.
Думать, что обновление инструментов Firebase не приходило мне в голову при устранении неполадок. Полный ответ представлял собой комбинацию этого и путей перезаписи, которые выглядят как захват как /api/**, так и /api/.
@DrewHutton, не могли бы вы уточнить «пути перезаписи, которые выглядят как захват /api/** и /api/». Вам нужно было добавить два оператора перезаписи... любой шанс, что вы можете просто показать, как в итоге выглядели ваши операторы перезаписи. (у меня такая же проблема)
У меня это работает: 1) установка источника на «**» 2) удаление index.html из общедоступного каталога
На самом деле, я запустил это только что и, просматривая журналы развернутого облачного контейнера 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, не могли бы вы показать свой firebase.json с перезаписью? У меня такое же угловое приложение с /api в облаке. Когда я открываю свой домен URL, например. domain.com/api загружает облачный запуск, когда я открываю угловое приложение, например. domain.com/agnet угловая загрузка приложения. Однако, когда я снова открываю domain.com/api, он не работает, загружая облачный запуск, но приложение angular.
"rewrites": [ { "source": "/api/**", "run": { "serviceId": "api", "region": "europe-west1" } }, { "source": "* *", "destination": "/index.html" } ]
Если все приведенные выше ответы не помогли вам, исправление, которое сработало для меня, было:
После удаления сгенерированного файла index.html он смог запустить мои облачные контейнеры с перезаписью.
У меня есть редирект Cloud Run на **, который работает нормально. Пожалуйста, отредактируйте вопрос, чтобы указать, что на самом деле происходит, чего не ожидается (будьте конкретны, не говорите просто «это не работает»). Также попробуйте запустить эмулятор Firebase Hosting с помощью
firebase serve --only hostingи посмотрите на результат. Перезапись в Cloud run должна появиться там.