如何使用Firebase Emulator测试本地开发的Cloud Function
Cloud Functions 本地模拟器测试完整流程
不是写完index.js直接跑模拟器就能正常测试,必须走标准流程,少一步都可能跑不起来:
- 项目初始化校验
如果你是手动新建的index.js文件,先在VS Code打开的项目根目录终端跑firebase init functions,按交互提示选你绑定的Firebase项目、选JavaScript/TS作为开发语言、确认安装依赖。初始化完成后根目录会生成firebase.json配置、functions工作目录,你写的函数代码必须放在functions/index.js里才会被模拟器识别,自己在外层随便建的index.js模拟器读不到。如果你本来就是在初始化生成的
functions目录下编辑的index.js,这步可以跳过。 - 模拟器配置
根目录执行firebase init emulators,在弹出的服务列表里至少勾选Functions Emulator,如果你的函数依赖Firestore、Auth、云存储这类其他Firebase服务,把对应模拟器也勾上,按提示设置好本地端口就行,配置会自动写入firebase.json。 - 依赖安装
终端切到functions目录执行npm install,把package.json里列的所有依赖装全。后续你给函数加了新的第三方npm包,都要在这个目录下重新装,不然模拟器启动会报模块缺失错误。 - 启动模拟器
回到项目根目录执行firebase emulators:start,等服务全部拉起,控制台会打印每个模拟器的访问地址,其中Emulator Suite的可视化面板默认在http://localhost:4000,HTTP类型函数的本地调用地址也会在控制台明确列出来。 - 测试执行
两种常用测试方式:- 打开Emulator UI的Functions面板,找到你写的对应函数,手动构造测试参数触发,直接看执行日志、返回结果和报错信息
- HTTP触发的函数直接用接口测试工具、浏览器访问控制台给出的本地接口地址即可;事件触发类函数(比如文档写入触发、新用户注册触发),在对应关联的模拟器里构造触发事件,就能看到函数的执行逻辑是否符合预期。
补充说明:正常修改index.js代码后模拟器会自动热重载,不用反复重启;如果遇到热重载不生效、代码改了不更新的情况,按Ctrl+C终止进程后重新跑启动命令就行。
内容的提问来源于stack exchange,提问作者user9741470
相关产品推荐
相关产品推荐

