Firebase-tools: Função da nuvem: /<segment>/ ** reescrever não funciona</segment>

Criado em 10 jul. 2017  ·  3Comentários  ·  Fonte: firebase/firebase-tools

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

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:

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
pong

Entã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
404

Se 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
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
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
.

Todos 3 comentários

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
pong

Entã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
404

Se 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
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
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

Esta página foi útil?
0 / 5 - 0 avaliações