当 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"
}
]
},
当部署到 firebase 时,myapi
函数将使用以以下内容开头的请求 url 来调用:
/api/myapi/
但如果在模拟器中 运行 它最终看起来像:
/[firebase-project-id]/[firebase-region]/myapi/api/myapi/
如果该函数不查看请求路径,这没有什么区别,但在我的例子中,该函数是一个带有路由的 express (koa) 处理程序的处理程序,因此了解基本路径很重要。
我查看了 process.env 中是否有可用的内容,但只有 GCLOUD_PROJECT 名称和一些 FIREBASE_CONFIG 参数。
我在 firebase.json 中找不到任何关于更高级的函数重写控制的文档。
我可以在测试中解决这个问题,方法是设置一个环境变量以匹配函数在本地 运行ning 的前缀,并在请求处理期间将其考虑在内。不幸的是,在模拟器启动并记录函数 url 之前,请求 url 前缀不可用。
希望能找到更好的测试方案
这原来是一个错误,我的案例在 firebase-tools 6.10.0 中得到了解决。
https://github.com/firebase/firebase-tools/issues/1279
这个相关问题也被打开了:
对于 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 中找不到任何关于更高级的函数重写控制的文档。
我可以在测试中解决这个问题,方法是设置一个环境变量以匹配函数在本地 运行ning 的前缀,并在请求处理期间将其考虑在内。不幸的是,在模拟器启动并记录函数 url 之前,请求 url 前缀不可用。
希望能找到更好的测试方案
这原来是一个错误,我的案例在 firebase-tools 6.10.0 中得到了解决。
https://github.com/firebase/firebase-tools/issues/1279
这个相关问题也被打开了: