Firebase-tools: Облачная функция: /<segment>/ ** перезапись не работает</segment>

Созданный на 10 июл. 2017  ·  3Комментарии  ·  Источник: firebase/firebase-tools

У меня есть облачная функция

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
.

Все 3 Комментарий

Вам нужно добавить / 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 тоже не работает?

Была ли эта страница полезной?
0 / 5 - 0 рейтинги