polymer 2.0とPolymerfireを使用して構築されたPWAであり、私のWebアプリケーションです。クラウド機能(マイクロサービス)として機能するエクスプレスアプリです。例:exports.register=functions.https.onRequest(app);
/fns/register
と/fns/verify
を上記のアプリregister
にマップする書き換えルールを追加する方法。
Cloudfunctionマイクロサービスプロジェクトでfirebase.json
ファイルを更新しましたが、firebase deploy --only functions:register
を実行すると、ホスティング構成をデプロイするためのパブリックフォルダーがないと表示されます。
{
"hosting": {
"rewrites": [{
"source": "/fns/**", "function": "register"
}]
}
}
元のWebアプリケーションで書き換えルールを維持することは1つの選択肢ですが、それでも理想的なIMHOではありません。元のWebアプリケーションでそれを実行する必要がある場合は、それも試してみましたが、作成できませんでした。元のWebアプリケーションで更新されたfirebase.json
は次のとおりです。
{
"database": {
"rules": "database.rules.json"
},
"hosting": {
"public": "build/default/public",
"rewrites": [
{
"source": "/fns/**",
"function": "register"
},
{
"source": "**",
"destination": "/index.html"
}
]
}
}
すべてのリソース(ホスティング、機能、データベース)に対して1つのプロジェクトを維持することが理想的です。Firebaseプロジェクトを管理する正しい方法だと思います。
ホスティングサービスの1つのパラメーター(書き換え)のみを変更しようとしていますが、それは機能しません。 firebase.jsonをデプロイすると、他のすべての構成が上書きされます。だから、あなたが手に入れたエラーは、Firebaseが最後の設定ファイルを見て更新の違いをチェックしないためです。「public」はホスティングに必要なパラメータなので、すべての最後の設定ファイルを上書きしてエラーを取得しようとします。
これは、Firebaseが/fns/register
を/register
に書き換えることを期待していることを説明していますが、それは発生しません。関数は「フル」URL /fns/register
を受け取ります。
最良の方法は、ルートルートを作成することだと思います。
var functions = require('firebase-functions');
var express = require('express');
var app = express();
var router = express.Router();
router.post('/register', registerFunction);
router.post('/verify', verifyFunction);
app.use('/fns', router);
exports.fns = functions.https.onRequest(app);
そして、すべての関数をfns
関数に書き換えます:
{
"database": {
"rules": "database.rules.json"
},
"hosting": {
"public": "build/default/public",
"rewrites": [
{
"source": "/fns/**",
"function": "fns"
},
{
"source": "**",
"destination": "/index.html"
}
]
}
}
これで、https://<your-project-id>.firebaseapp.com/fns/register
を使用して登録機能にアクセスし、https://<your-project-id>.firebaseapp.com/fns/verify
を使用して確認機能にアクセスできます。
この質問はすでにここで回答されています Firebase Hosting with dynamic cloud functions rewrites
SPAを1つのプロジェクトに、マイクロサービスを別のプロジェクトに保持するのが最善ですが、@ Marcos Vはルート関数の使用について正しいことを認めます