Javascript 将Firebase宿主根目录重定向到云函数不起作用
我正在使用Firebase主机和一个Javascript 将Firebase宿主根目录重定向到云函数不起作用,javascript,express,firebase,google-cloud-functions,firebase-hosting,Javascript,Express,Firebase,Google Cloud Functions,Firebase Hosting,我正在使用Firebase主机和一个Firebase.json文件,该文件应该将所有流量转发到一个云函数(prerender),该函数为SEO填充meta和og标记 { "hosting": { "public": "dist/prod", "rewrites": [ { "source": "**", "function": "prerender" } ] } } 我的prere
Firebase.json
文件,该文件应该将所有流量转发到一个云函数(prerender),该函数为SEO填充meta和og标记
{
"hosting": {
"public": "dist/prod",
"rewrites": [
{
"source": "**",
"function": "prerender"
}
]
}
}
我的prerender
函数正在处理请求并呈现HTML文件。这很好:
export const prerender = functions.https.onRequest((req, res) => {
console.log('prerender function: "' + req.path + '"');
...
}
在https://xxx.cloudfunctions.net/prerender
,我在Firebase仪表板的函数->日志下正确地得到了调用:
prerender function: "null"
但是,当调用https://mypage.firebaseapp.com
,我没有日志,它似乎在我的dist/prod
文件夹中呈现index.html
我的重写有什么遗漏吗?我尝试将
/
重写为相同的函数,但没有成功。非常感谢任何提示 您应该能够完全按照显示的方式将所有URL路由到函数。我猜您的dist/prod目录中仍然有一个index.html文件。在我的测试项目中,我只是将root index.html重命名为其他名称,对/
的请求被路由到我的函数
事实证明,如果存在与客户端请求URL匹配的静态web内容,则将提供该内容,而不是将其委托给该功能。对于任何传入URL都是如此。真正确保所有请求都路由到您的功能的唯一方法是在部署之前从dist/prod
文件夹中删除所有内容
我相信关键信息在以下文件中:
仅当此时不存在文件或文件夹时,才应用重写规则
指定的源,并返回位于的文件的实际内容
目标,而不是HTTP重定向
在服务器上使用NestJS的详细解决方案如下: