部署Firebase Crashlytics触发函数时报错的原因咨询
这种“控制台能看到崩溃记录,但CLI部署时报错未启用Crashlytics”的情况其实挺常见的,我整理了几个大概率的原因和对应的解决方法:
确认Firebase CLI关联的项目是否正确
本地CLI可能同时关联了多个Firebase项目,先运行firebase projects:list查看当前默认项目ID,确认和你在控制台查看崩溃记录的项目是同一个。如果不一致,用firebase use <目标项目ID>切换到正确项目。检查应用的Crashlytics关联状态
虽然能看到崩溃记录,但可能你的应用(iOS/Android等)在项目中的关联逻辑有问题。去控制台Crashlytics页面,通过顶部的应用选择器确认选中的应用属于当前项目,且状态显示“已启用”。另外要核对应用的包名/ID,确保和你Function配置或代码中引用的完全一致。刷新CLI的本地缓存
CLI有时会缓存旧的项目配置,导致识别不到最新的Crashlytics状态。可以尝试先firebase logout再重新firebase login,或者删除本地项目根目录的.firebase文件夹(注意备份重要配置),之后重新执行firebase init functions,初始化过程中务必选择正确的项目并确认Crashlytics相关权限已开启。等待Firebase后端状态同步
控制台的可视化状态和CLI调用的后端API之间偶尔会有延迟,尤其是刚启用Crashlytics不久的场景。可以等待10-15分钟,再重新尝试部署:firebase deploy --only functions。明确指定Function关联的应用ID
如果你的项目下有多个应用,可能需要在Function代码中明确指定目标应用的ID,避免CLI识别错误。示例代码如下:exports.onNewCrash = functions.crashlytics.app('你的应用ID').onNewCrash((event) => { // 你的函数逻辑代码 });
如果以上方法都没解决,建议去控制台的项目设置页面,查看“应用”标签下所有应用的Crashlytics状态,确保全部正常启用后再重试部署。
内容的提问来源于stack exchange,提问作者Ajay Singh Beniwal

