У меня есть облачная функция
const app = express()
app.get('/ping', (req, res) => {
res.send('pong');
})
exports.api = functions.https.onRequest(app)
и он отлично работает
https: //...cloudfunctions.net/api/ping
понг
Затем я добавляю следующую конфигурацию
{
"hosting": {
"public": "public",
"rewrites": [ {
"source": "/api/**", "function": "api"
} ]
}
}
и попробуйте вызвать его из URL-адреса приложения, и это не удастся.
https: //...firebaseapp.com/api/ping
404
Если я использую перезаписывать все вызовы моих функций, как это
{
"hosting": {
"public": "public",
"rewrites": [ {
"source": "**", "function": "api"
} ]
}
}
тогда это работает
https: //...firebaseapp.com/ping
понг
Мне что-то здесь не хватает или этот сценарий не поддерживается?
Об этом написано в блоге, который использует и сегментирует при перезаписи:
https://firebase.googleblog.com/2017/06/serving-dynamic-content-with-cloud.html
Вам нужно добавить / api в начало вашего экспресс-маршрута. Префиксы не
отрубается, когда URL-адреса отправляются в облачную функцию.
В воскресенье, 9 июля 2017 г., 23:27 roosi [email protected] написал:
У меня есть облачная функция
const приложение = экспресс ()
app.get ('/ ping', (req, res) => {
res.send ('понг');
})export.api = functions.https.onRequest (приложение)
и он отлично работает
https: //...cloudfunctions.net/api/ping
понгЗатем я добавляю следующую конфигурацию
{
"hosting": {
"public": "public",
"перезаписывает": [{
"источник": "/ api / **", "функция": "api"
}]
}
}и попробуйте вызвать его из URL-адреса приложения, и это не удастся.
https: //...firebaseapp.com/api/ping
404Если я использую перезаписывать все вызовы моих функций, как это
{
"hosting": {
"public": "public",
"перезаписывает": [{
"источник": "**", "функция": "API"
}]
}
}тогда это работает
https: //...firebaseapp.com/ping
понгМне что-то здесь не хватает или этот сценарий не поддерживается?
Об этом написано в блоге, который использует и сегментирует при перезаписи:
https://firebase.googleblog.com/2017/06/serving-dynamic-content-with-cloud.html
http: // url-
Вы получаете это, потому что подписаны на эту ветку.
Ответьте на это письмо напрямую, просмотрите его на GitHub
https://github.com/firebase/firebase-tools/issues/392 или отключите
нить
https://github.com/notifications/unsubscribe-auth/AAAD_updmJ5mvK9NFrx5v-a0lQckEhaHks5sMcRogaJpZM4OSaDu
.
@roosi Я тоже столкнулся с этой проблемой на прошлой неделе. Это раздражает, но лучшее решение, которое я мог придумать для подобного сценария, - это создать функцию main
которой размещены все другие функции, и переписать все вызовы хостинга для нее. Это позволяет, например, вызвать https://...firebaseapp.com/api/ping
.
См. Мой ответ здесь, чтобы узнать больше:
https://stackoverflow.com/a/45224176/1309346
Я предполагаю, что пример на https://github.com/firebase/functions-samples/blob/master/authorized-https-endpoint тоже не работает?
Самый полезный комментарий
Вам нужно добавить / api в начало вашего экспресс-маршрута. Префиксы не
отрубается, когда URL-адреса отправляются в облачную функцию.
В воскресенье, 9 июля 2017 г., 23:27 roosi [email protected] написал: