firebase - 当 http firebase-functions 在模拟器下运行和部署时,有没有办法规范 request.url 的差异
问题描述
对于 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 前缀才可用。
我希望找到更好的测试解决方案。
解决方案
结果证明这是一个错误,并且在我的 firebase-tools 6.10.0 中已解决。
https://github.com/firebase/firebase-tools/issues/1279
此相关问题也已打开:
推荐阅读
- installation - 在 OPAM 中安装软件包列表
- node.js - 无法在 mongodb atlas UI 中保存后期模型
- c# - 为从 Powershell 动态创建的 .NET CheckBox 动态创建 EventHandler
- java - 地图
Postman 的关键价值 - scala - Scala Spark Sql - 从 Hive 行读取空值
- google-apps-script - 如何使用 Google App Script 在同一个文档中复制和粘贴特定信息?
- javascript - Javascript 运算符优先级问题:i = i— + ++i
- php - PHP - 将点替换为箭头
- java - Python Watchdog PollingObserverVFS 性能增强
- html - Django如何分配一个功能来发送电子邮件到一个HTML按钮