Firebase Cloud Firestore云函数触发器context.params返回undefined问题
问题根因
你贴出的package.json是前端React项目的配置,并未包含Firebase Cloud Functions运行所需的依赖,且你大概率是将云函数代码写在了前端项目中,没有遵循Firebase项目的标准结构。
解决步骤
- 初始化独立的Functions目录
在你的Firebase项目根目录执行firebase init functions,按照提示完成初始化后会生成专门的functions文件夹,云函数的代码需要写在该目录下的index.js文件中,而非前端项目的代码文件内。 - 确认Functions依赖安装
进入functions目录,检查package.json是否存在firebase-functions、firebase-admin依赖,缺失的话执行npm install firebase-functions firebase-admin安装。 - 适配版本对应的写法
如果你使用的是1.x版本的firebase-functions,你原本的写法是正确的,触发后即可正常拿到context.params的值。
如果你升级到了2.x版本的firebase-functions,参数获取逻辑有调整,需要修改为如下写法:
const { onDocumentCreated } = require("firebase-functions/v2/firestore"); exports.makeUppercase = onDocumentCreated("/messages/{documentId}", (event) => { console.log(event.params.documentId); console.log(event.params); });
- 调试验证
本地调试请启动Firebase模拟器,执行firebase emulators:start --only functions,firestore,向对应Firestore的messages集合新增文档即可触发生成日志。
内容的提问来源于stack exchange,提问作者XeronJY
相关产品推荐
相关产品推荐

