我有一個名爲api
的基於express.js的基於firebase的雲功能應用程序。要使用自定義域名,我嘗試使用Firebase Hosting重寫功能將特定網址路由到該功能。 我下面講的雲功能和火力地堡託管在這裏,https://firebase.google.com/docs/hosting/functions官方文檔,並且已經嘗試了許多組合,包括以下內容:帶有動態雲功能的Firebase主機重寫
"rewrites": [
{
"source": "/api/**",
"function": "api"
}
]
"rewrites": [
{
"source": "/api/:path1/:dat1/dat",
"function": "api/:path1/:dat1/dat"
}
]
"rewrites": [
{
"source": "/api/path1/dat1/dat",
"function": "api"
}
]
"rewrites": [
{
"source": "/api/*/*/*",
"function": "api"
}
]
可悲的是,它似乎並不爲任何可能的組合工作。 我明確的應用程序有以下GET路徑我打算使用:類似這些
'/api/users/:userId/:userData'
'/api/users/:userId/:userData/json'
'/api/users/:userId/'
等。的:帳戶及:用戶數據都在我的請求,參數,可以作爲它的工作原理與express.js
所需的功能按預期在
https://my-firebase-app.cloudfunctions.net
,但他們不工作
https://my-app.firebaseapp.com
請告訴我這些應該如何工作,我做錯了什麼。
編輯: 這裏是什麼我的雲功能,出口看起來像
const functions = require('firebase-functions');
const express = require('express');
const app = express();
app.get('/users/:userId/:userData/json', (req, res) => {
// Do App stuff here
}
// A couple more app.get in the same format
exports.api = functions.https.onRequest(app);
編輯樣品2: @ DougStevenson的建議之後,我嘗試了以下配置
我想在下面的我firebase.json,
{
"hosting": {
"rewrites": [
{
"source": "/api",
"function": "api"
}
],
"public": "public"
}
}
但是我得到了同樣的問題,函數永遠不會被調用。 我讀過如何重寫最後的手段選項,如果有文件存在於主機,它不會去指定的功能。(我試圖尋找這個ws提到的SO帖子,但我找不到它)所以我從主機的公共目錄中刪除了404.html和index.html文件,因爲我不需要它們。但問題依然存在。
編輯2: 好了,大量的試驗和錯誤之後,我不得不硬編碼的路徑採用以下格式:
rewrites : [
{
"source": "https://stackoverflow.com/users/**/**/json",
"function": "api"
},
{
"source": "/api/users/**/**/json",
"function": "api"
}
]
在此之後,快遞應用程序配置是這樣的:
app.get('/users/:userId/:userData/json', Foo)
我還是希望如果有人能提出一個更好的方式來做到這一點,而不是在每個人工投入托管重寫所需的URI。
您可以編輯您的問題簡要地展示您的明確程序和https的雲功能方面發揮作用的出口?我需要看看你是如何設置的。 –
@DougStevenson先生,謝謝您的回覆。 我對基於JS的後端相當不熟悉,所以我保留了大部分內容,如firebase-examples所示。 –
你能找到解決方案嗎?我也一直在努力解決這個問題... – Pkmmte