部署Firebase云函数至生产环境遇TypeError错误求助
Firebase云函数生产部署报错:Cannot read properties of undefined (reading 'key') 原因分析
问题背景
- 开发环境部署正常,生产环境部署触发以下错误:
Error: Failed to load function definition from source: Failed to generate manifest from function source: TypeError: Cannot read properties of undefined (reading 'key') - 现有100+云函数,此前未出现该错误
- 未更新Firebase相关依赖包,仅新增了部分函数(新增函数在开发环境部署无异常)
- 当前依赖版本:
"firebase-admin": "^9.12.0", "firebase-functions": "^3.24.1", "firebase-tools": "^9.22.0" - debug日志关键片段:
[2023-07-16T23:50:41.173Z] Got response from /__/functions.yaml Failed to generate manifest from function source: TypeError: Cannot read properties of undefined (reading 'key') [2023-07-16T23:50:41.177Z] Failed to parse functions.yaml incomplete explicit mapping pair; a key node is missed; or followed by a non-tabulated empty line at line 1, column 60: ... from function source: TypeError: Cannot read properties of unde ... ^
可能的触发原因
- 新增函数存在未覆盖的空对象场景:开发环境测试数据或缓存让某个对象始终有值,但生产环境的实际数据触发了对象为
undefined的情况,代码直接访问其key属性导致报错。 - 生产环境缺失关键环境变量:新增函数依赖的环境变量在开发环境已配置,但生产环境未同步配置,导致依赖该变量初始化的对象未被创建,进而访问
key属性失败。 - 顶层代码执行触发异常:Firebase生产部署时会扫描所有函数生成清单,这个过程会执行函数的顶层代码。如果新增函数的顶层代码里有访问
undefined对象key的逻辑,开发环境本地运行时没触发,但部署扫描时直接抛出错误。 - 动态加载/条件导入的差异:新增函数使用了动态导入或条件加载模块,开发环境下模块加载顺序或存在性正常,但生产打包或部署时模块未正确加载,返回
undefined后触发属性访问错误。 - 依赖安装的隐性差异:虽然未更新依赖版本,但生产环境的依赖安装(如lock文件不一致、npm版本不同)可能导致某个依赖库的行为变化,间接触发了未定义对象的属性访问。
内容的提问来源于stack exchange,提问作者MadMac
相关产品推荐
相关产品推荐

