Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/454.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 将Firebase宿主根目录重定向到云函数不起作用_Javascript_Express_Firebase_Google Cloud Functions_Firebase Hosting - Fatal编程技术网

Javascript 将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主机和一个
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的详细解决方案如下: