Eu tenho a função de nuvem
const app = express()
app.get('/ping', (req, res) => {
res.send('pong');
})
exports.api = functions.https.onRequest(app)
e funciona bem
https: //...cloudfunctions.net/api/ping
pong
Então eu adiciono a seguinte configuração
{
"hosting": {
"public": "public",
"rewrites": [ {
"source": "/api/**", "function": "api"
} ]
}
}
e tente chamá-lo do url do aplicativo e ele falhará.
https: //...firebaseapp.com/api/ping
404
Se eu usar reescrever todas as chamadas para minhas funções como esta
{
"hosting": {
"public": "public",
"rewrites": [ {
"source": "**", "function": "api"
} ]
}
}
então funciona
https: //...firebaseapp.com/ping
pong
Estou faltando alguma coisa aqui ou este cenário não é compatível?
Existe o blog escrevendo sobre isso, que usa e segmenta na reescrita:
https://firebase.googleblog.com/2017/06/serving-dynamic-content-with-cloud.html
Você precisa adicionar / api ao início de sua rota expressa. Prefixos não são
cortado quando URLs são enviados para a função de nuvem.
No domingo, 9 de julho de 2017, 23h27 roosi [email protected] escreveu:
Eu tenho a função de nuvem
const app = express ()
app.get ('/ ping', (req, res) => {
res.send ('pong');
})exportações.api = functions.https.onRequest (app)
e funciona bem
https: //...cloudfunctions.net/api/ping
pongEntão eu adiciono a seguinte configuração
{
"hospedagem": {
"public": "public",
"reescreve": [{
"source": "/ api / **", "function": "api"
}]
}
}e tente chamá-lo do url do aplicativo e ele falhará.
https: //...firebaseapp.com/api/ping
404Se eu usar reescrever todas as chamadas para minhas funções como esta
{
"hospedagem": {
"public": "public",
"reescreve": [{
"fonte": "**", "função": "api"
}]
}
}então funciona
https: //...firebaseapp.com/ping
pongEstou faltando alguma coisa aqui ou este cenário não é compatível?
Existe o blog escrevendo sobre isso, que usa e segmenta na reescrita:
https://firebase.googleblog.com/2017/06/serving-dynamic-content-with-cloud.html
http: // url-
Você está recebendo isto porque está inscrito neste tópico.
Responda a este e-mail diretamente, visualize-o no GitHub
https://github.com/firebase/firebase-tools/issues/392 ou desative o
fio
https://github.com/notifications/unsubscribe-auth/AAAD_updmJ5mvK9NFrx5v-a0lQckEhaHks5sMcRogaJpZM4OSaDu
.
@roosi Eu também encontrei esse problema na semana passada. É irritante, mas a melhor solução que eu poderia inventar para um cenário como este é criar uma função main
que hospeda todas as outras funções e reescrever todas as chamadas de hospedagem para ela. Isso permite que você chame https://...firebaseapp.com/api/ping
, por exemplo.
Veja minha resposta aqui para mais detalhes:
https://stackoverflow.com/a/45224176/1309346
Eu acho que o exemplo em https://github.com/firebase/functions-samples/blob/master/authorized-https-endpoint também está quebrado?
Comentários muito úteis
Você precisa adicionar / api ao início de sua rota expressa. Prefixos não são
cortado quando URLs são enviados para a função de nuvem.
No domingo, 9 de julho de 2017, 23h27 roosi [email protected] escreveu: