Pha*_*ani 13 firebase firebase-hosting google-cloud-functions
我有一个使用聚合物2.0和聚合物火力建造的PWA,是我的网络应用程序.我有一个快速应用程序充当云功能(微服务).例:exports.register=functions.https.onRequest(app);
如何添加重写规则来映射说明/fns/register和/fns/verify上面的应用程序register.
我firebase.json在云功能微服务项目中更新了我的文件,但是当我运行firebase deploy --only functions:register它时说没有公共文件夹来部署托管配置!
{
"hosting": {
"rewrites": [{
"source": "/fns/**", "function": "register"
}]
}
}
Run Code Online (Sandbox Code Playgroud)
在原始Web应用程序中维护重写规则可能是一种选择,但仍然不是理想的恕我直言.如果我要在原始的Web应用程序中执行此操作,我也尝试过,但无法实现.以下是我firebase.json在原始网络应用程序中的更新:
{
"database": {
"rules": "database.rules.json"
},
"hosting": {
"public": "build/default/public",
"rewrites": [
{
"source": "/fns/**",
"function": "register"
},
{
"source": "**",
"destination": "/index.html"
}
]
}
}
Run Code Online (Sandbox Code Playgroud)
Mar*_* V. 30
维护所有资源(主机,功能和数据库)的一个项目是理想的,我认为是管理Firebase项目的正确方法.
您正在尝试更改托管服务的一个参数(重写),而不是它的工作方式.部署firebase.json时,将覆盖所有其他配置.所以,你得到的错误是因为Firebase看起来不是最后一个配置文件并检查更新有什么不同,它只是试图覆盖所有最后的配置文件并得到一个错误,因为"public"是托管所需的参数.
这解释了,现在你期望Firebase重写/fns/register为/register,但它不会发生.你的功能会收到"完整"的网址/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);
Run Code Online (Sandbox Code Playgroud)
并重写所有fns功能:
{
"database": {
"rules": "database.rules.json"
},
"hosting": {
"public": "build/default/public",
"rewrites": [
{
"source": "/fns/**",
"function": "fns"
},
{
"source": "**",
"destination": "/index.html"
}
]
}
}
Run Code Online (Sandbox Code Playgroud)
现在,您可以使用它https://<your-project-id>.firebaseapp.com/fns/register来访问您的注册功能并https://<your-project-id>.firebaseapp.com/fns/verify获得验证功能.
| 归档时间: |
|
| 查看次数: |
10316 次 |
| 最近记录: |