Firebase-tools: Fungsi awan: /<segment>/** penulisan ulang tidak berhasil</segment>

Dibuat pada 10 Jul 2017  ·  3Komentar  ·  Sumber: firebase/firebase-tools

Saya memiliki fungsi cloud

const app = express()

app.get('/ping', (req, res) => {
  res.send('pong');
})

exports.api = functions.https.onRequest(app)

dan itu berfungsi dengan baik

https://...cloudfunctions.net/api/ping
pong

Kemudian saya menambahkan konfigurasi berikut

{
  "hosting": {
    "public": "public",
    "rewrites": [ {
      "source": "/api/**", "function": "api"
    } ]
  }
}

dan coba panggil dari url aplikasi dan gagal.

https://...firebaseapp.com/api/ping
404

Jika saya menggunakan tulis ulang semua panggilan ke fungsi saya seperti ini

{
  "hosting": {
    "public": "public",
    "rewrites": [ {
      "source": "**", "function": "api"
    } ]
  }
}

maka itu berhasil

https://...firebaseapp.com/ping
pong

Apakah saya melewatkan sesuatu di sini atau skenario ini tidak didukung?

Ada blog yang menulis tentang ini, yang menggunakan dan segmen dalam penulisan ulang:

https://firebase.googleblog.com/2017/06/serving-dynamic-content-with-cloud.html

Komentar yang paling membantu

Anda perlu menambahkan /api ke awal rute ekspres Anda. Awalan tidak
dipotong ketika URL dikirim ke fungsi cloud.

Pada Minggu, 9 Juli 2017, 23:27 roosi [email protected] menulis:

Saya memiliki fungsi cloud

aplikasi const = ekspres()

app.get('/ping', (req, res) => {
res.send('pong');
})

export.api = functions.https.onRequest(app)

dan itu berfungsi dengan baik

https://...cloudfunctions.net/api/ping
pong

Kemudian saya menambahkan konfigurasi berikut

{
"hosting": {
"publik": "publik",
"menulis ulang": [ {
"sumber": "/api/**", "fungsi": "api"
} ]
}
}

dan coba panggil dari url aplikasi dan gagal.

https://...firebaseapp.com/api/ping
404

Jika saya menggunakan tulis ulang semua panggilan ke fungsi saya seperti ini

{
"hosting": {
"publik": "publik",
"menulis ulang": [ {
"sumber": "**", "fungsi": "api"
} ]
}
}

maka itu berhasil

https://...firebaseapp.com/ping
pong

Apakah saya melewatkan sesuatu di sini atau skenario ini tidak didukung?

Ada blog yang menulis tentang ini, yang menggunakan dan segmen dalam penulisan ulang:

https://firebase.googleblog.com/2017/06/serving-dynamic-content-with-cloud.html
http://url


Anda menerima ini karena Anda berlangganan utas ini.
Balas email ini secara langsung, lihat di GitHub
https://github.com/firebase/firebase-tools/issues/392 , atau matikan suara
benang
https://github.com/notifications/unsubscribe-auth/AAAD_updmJ5mvK9NFrx5v-a0lQckEhaHks5sMcRogaJpZM4OSaDu
.

Semua 3 komentar

Anda perlu menambahkan /api ke awal rute ekspres Anda. Awalan tidak
dipotong ketika URL dikirim ke fungsi cloud.

Pada Minggu, 9 Juli 2017, 23:27 roosi [email protected] menulis:

Saya memiliki fungsi cloud

aplikasi const = ekspres()

app.get('/ping', (req, res) => {
res.send('pong');
})

export.api = functions.https.onRequest(app)

dan itu berfungsi dengan baik

https://...cloudfunctions.net/api/ping
pong

Kemudian saya menambahkan konfigurasi berikut

{
"hosting": {
"publik": "publik",
"menulis ulang": [ {
"sumber": "/api/**", "fungsi": "api"
} ]
}
}

dan coba panggil dari url aplikasi dan gagal.

https://...firebaseapp.com/api/ping
404

Jika saya menggunakan tulis ulang semua panggilan ke fungsi saya seperti ini

{
"hosting": {
"publik": "publik",
"menulis ulang": [ {
"sumber": "**", "fungsi": "api"
} ]
}
}

maka itu berhasil

https://...firebaseapp.com/ping
pong

Apakah saya melewatkan sesuatu di sini atau skenario ini tidak didukung?

Ada blog yang menulis tentang ini, yang menggunakan dan segmen dalam penulisan ulang:

https://firebase.googleblog.com/2017/06/serving-dynamic-content-with-cloud.html
http://url


Anda menerima ini karena Anda berlangganan utas ini.
Balas email ini secara langsung, lihat di GitHub
https://github.com/firebase/firebase-tools/issues/392 , atau matikan suara
benang
https://github.com/notifications/unsubscribe-auth/AAAD_updmJ5mvK9NFrx5v-a0lQckEhaHks5sMcRogaJpZM4OSaDu
.

@roosi Saya juga mengalami masalah ini minggu lalu. Ini menjengkelkan tetapi solusi terbaik yang bisa saya buat untuk skenario seperti ini adalah membuat fungsi main yang menampung semua fungsi lain dan menulis ulang semua panggilan hosting ke sana. Ini memungkinkan Anda untuk memanggil https://...firebaseapp.com/api/ping , misalnya.

Lihat jawaban saya di sini untuk lebih jelasnya:
https://stackoverflow.com/a/45224176/1309346

Apakah halaman ini membantu?
0 / 5 - 0 peringkat