firebase从url中删除函数名

firebase从url中删除函数名,firebase,express,google-cloud-platform,routes,google-cloud-functions,Firebase,Express,Google Cloud Platform,Routes,Google Cloud Functions,我有这样一个简单的express应用程序。 const express = require("express"); var app = express(); app.get("/", (req, res)=>{ ...handle request... }); ... exports.app = functions.https.onRequest(app); 我部署在火力基地。当我部署它时,它会通过函数名创建一个新路由,如下所示:ht

我有这样一个简单的express应用程序。

const express = require("express");
var app = express();

app.get("/", (req, res)=>{
    ...handle request...
});

...

exports.app = functions.https.onRequest(app);
我部署在火力基地。当我部署它时,它会通过函数名创建一个新路由,如下所示:
https://us-central1-[projectname].cloudfunctions.net/app

这是因为我把
exports.app=functions.https.onRequest(app)
那么,如果最后没有
/app
,我如何部署并使其工作呢?
我需要这个,因为我的前端上的引用使用了
“/login”
之类的路由,而在这种情况下,由于它添加了
app
要求所有路由都像
“/app/login”

我甚至尝试了导出默认应用程序,但没有成功


如何在不使用函数名作为路由的情况下进行部署?

无法从托管在
cloudfunctions.net
上的URL的第一部分删除
/[exportname]
,因为这是触发函数的方式

理想情况下,您不需要提供来自
cloudfunctions.net
域的资源,而是将您的应用程序放在可以使用
https://yourapp.example.com/login
这将很好地与Express配合使用

但是,如果您希望调用
https://us-central1-[projectname].cloudfunctions.net/app/login
并使其行为如同从
https://us-central1-[projectname].cloudfunctions.net/login
,您可以使用条件URL重写。下面的示例将从URL中删除
/app
,如果且仅当主机名以
cloudfunctions.net
结尾,并且URL也以
“/app”
开头,然后移交给其他路由

从“express”导入express;
函数removePathForCloudFunctionsDomain(路径){
返回函数(req、res、next){
const rawUrl=req.url;//隐藏原始url
//如果不在cloudfunctions.net上或路径不匹配,则不执行任何操作
if(!req.hostname.endsWith(“cloudfunctions.net”)| |!rawUrl.startsWith(path)){
返回next();
}
//如果在这里,请修剪请求URL的路径
req.url=req.originalUrl=rawUrl.slice(path.length);
//移交给其他app.get()、app.use()等。
下一条(“路线”);
}
}
常量app=express();
应用程序使用(removePathForCloudFunctionsDomain(“/app”);
/*其他路线*/
出口应用程序;

无法从托管在
cloudfunctions.net
上的URL的第一部分删除
/[exportname]
,因为这是触发函数的方式

理想情况下,您不需要提供来自
cloudfunctions.net
域的资源,而是将您的应用程序放在可以使用
https://yourapp.example.com/login
这将很好地与Express配合使用

但是,如果您希望调用
https://us-central1-[projectname].cloudfunctions.net/app/login
并使其行为如同从
https://us-central1-[projectname].cloudfunctions.net/login
,您可以使用条件URL重写。下面的示例将从URL中删除
/app
,如果且仅当主机名以
cloudfunctions.net
结尾,并且URL也以
“/app”
开头,然后移交给其他路由

从“express”导入express;
函数removePathForCloudFunctionsDomain(路径){
返回函数(req、res、next){
const rawUrl=req.url;//隐藏原始url
//如果不在cloudfunctions.net上或路径不匹配,则不执行任何操作
if(!req.hostname.endsWith(“cloudfunctions.net”)| |!rawUrl.startsWith(path)){
返回next();
}
//如果在这里,请修剪请求URL的路径
req.url=req.originalUrl=rawUrl.slice(path.length);
//移交给其他app.get()、app.use()等。
下一条(“路线”);
}
}
常量app=express();
应用程序使用(removePathForCloudFunctionsDomain(“/app”);
/*其他路线*/
出口应用程序;