Firebase Emulator无法运行新添加的云函数 仅已部署函数可用
问题原因&解决方法
- 1 核心错误是
useEmulator的用法错误
该API是前端调用云函数的客户端代码中用来指定走模拟器的配置,不能写在云函数的定义代码里,你写在exports.testFunction定义里的useEmulator会导致该函数无法被模拟器正确识别加载。
如果你需要前端调用走本地模拟器,将firebase.functions().useEmulator("localhost", 5001)这段配置放在前端的firebase初始化代码中即可。 - 2 修正新函数的定义
按照已部署函数的格式写即可,不需要加useEmulator配置:
// 如果你需要和原有函数同区域,就加region配置 exports.testFunction = functions.region("europe-west1").https.onRequest((req, res) => { // 你的函数逻辑 }) // 不需要指定区域的话默认走us-central1,写为: // exports.testFunction = functions.https.onRequest(...)
- 3 确认模拟器加载了新函数
启动firebase模拟器时,命令行输出会列出所有已加载的HTTP函数的完整本地访问地址,直接复制testFunction对应的地址访问即可,不要手动拼接,避免区域、项目ID填写错误。 - 4 访问注意事项
模拟器默认走http协议,不要用https访问;修改函数代码后需要重启模拟器,或开启模拟器热重载功能,新改动才会生效。 - 5 兼容检查
你当前使用的firebase-functions@3.14.1属于旧版本,建议配套使用9.x版本的firebase-tools,版本差过大可能会出现函数加载异常。
内容的提问来源于stack exchange,提问作者crevulus
相关产品推荐
相关产品推荐

