繁体   English   中英

当http firebase-functions在模拟器下运行并部署时,是否有办法标准化request.url中的差异

[英]Is there a way to normalise differences in request.url when http firebase-functions running under emulator and deploy

对于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"
        }
      ]
    },

部署到myapi将使用以/api/myapi/开头的请求网址来调用myapi函数。

但如果在模拟器中运行,则最终看起来像: /[firebase-project-id]/[firebase-region]/myapi/api/myapi/

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

我一直在查看process.env中是否有任何可用的东西,但是那里只有GCLOUD_PROJECT名称和一些FIREBASE_CONFIG参数。

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

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

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

原来这是一个错误,在firebase-tools 6.10.0中针对我的情况已解决。

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

此相关问题也已打开:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM