部署Firebase Functions时报错无法成功上传函数,该如何解决?
Firebase云函数部署失败排查方案
- 首先排查入口文件名:你提到的代码文件名为
Indes.js,拼写错误,Firebase云函数默认识别的入口文件必须命名为index.js,文件名错误会导致部署流程无法读取到你编写的函数代码,直接返回部署无更新或失败的结果,这是最可能的故障原因。 - 确认目录结构是否正确:
index.js必须存放在Firebase项目根目录下的functions文件夹中,同时该文件夹下必须存在package.json文件,且文件的dependencies字段中已经声明firebase-functions、firebase-admin依赖,否则部署时会因找不到代码或依赖报错。 - 检查代码中异步操作的返回逻辑:你当前代码中的Firestore写入操作
db.collection('loggin').add({ description: 'Email sent'})是异步方法,没有添加return语句,虽然这个问题不会直接导致部署失败,但后续函数上线运行时会因为异步操作未完成就被云函数回收进程,导致日志写入失败,建议修改为如下代码:
const functions = require('firebase-functions'); const admin = require('firebase-admin'); admin.initializeApp(); const db = admin.firestore(); exports.onQuoteAdded = functions.firestore.document('Manager/Quote').onCreate((snap, context) => { const values = snap.data(); console.log(snap.data()); //send email return db.collection('loggin').add({ description: 'Email sent'}); });
- 确认依赖已正常安装:部署前请进入项目的
functions目录,执行npm install命令安装所有依赖,缺失依赖会触发部署校验失败。 - 确认监听路径是否符合规范:你当前配置的触发器监听的是固定单文档
Manager/Quote的创建事件,如果你需要监听的是集合下的所有子文档,需要将路径调整为Manager/{quoteId}格式,路径不符合Firestore规则的情况下也会触发部署校验报错。
内容的提问来源于stack exchange,提问作者Alex Butean
相关产品推荐
相关产品推荐

