当http firebase功能在模拟器下运行并部署时,是否有办法规范request.url中的差异

时间:2019-05-11 14:34:25

标签: firebase google-cloud-functions firebase-hosting firebase-cli

对于Firebase工具6.9.2:

使用firebase emulators:start --only functions, hosting时(通过托管重写规则来调用功能),与将功能部署到云中相比,使用不同的请求URL路径前缀来调用功能。例如,给定一个firebase.json托管代码段,例如:

    {
      "target": "myapi",
      "public": "./dist/hosting/myapi",
      "rewrites": [{
          "source": "/api/myapi/*",
          "function": "myapi"
        }
      ]
    },

部署到Firebase时,myapi函数将以以下开头的请求url进行调用:      /api/myapi/

但是如果在仿真器中运行,它将最终看起来像:  /[firebase-project-id]/[firebase-region]/myapi/api/myapi/

如果该函数不查看请求路径,那么这没有什么区别,但就我而言,该函数是具有路由的Express(koa)处理程序的处理程序,因此了解基本路径很重要。

我一直在查看process.env中是否有任何可用的内容,但是仅存在GCLOUD_PROJECT名称和一些FIREBASE_CONFIG参数。

在firebase.json中找不到有关重写功能的更高级控制的任何文档。

我可以在测试中通过设置环境变量来使其与功能在本地运行的前缀匹配并在请求处理期间将其考虑在内来解决该问题。不幸的是,直到启动仿真器并记录功能url后,请求url前缀才可用。

我希望找到更好的测试解决方案。

1 个答案:

答案 0 :(得分:0)

这原来是一个错误,在我的案例中,firebase-tools 6.10.0已解决。

https://github.com/firebase/firebase-tools/issues/1279

此相关问题也已打开:

https://github.com/firebase/firebase-tools/issues/1312