Firebase Functions部署/模拟器报错:正则表达式字符类属性名无效
解决Firebase Functions正则表达式无效的报错问题
问题核心
报错源于firebase-functions库中使用了\p{Ll}、\p{Lo}这类Unicode属性转义的正则表达式,这类语法需要Node.js支持ES2018的Unicode属性转义特性。你的2012款MacBook Air受限于旧系统(最高仅支持macOS Mojave 10.14),即便安装了Node.js v18,也可能存在特性支持不全的问题;或者终端实际运行的是系统自带的旧版本Node.js,而非你安装的v18.15.0。
解决方案
确认并切换Node.js版本
在终端执行node -v,检查输出是否为v18.15.0。如果显示旧版本,使用Node版本管理器(nvm)来切换:- 安装nvm后重新打开终端
- 执行
nvm use 18.15.0切换到目标版本 - 再次执行
node -v确认版本生效
降级firebase-functions到兼容版本
新版本firebase-functions(v4.x及以上)引入了该不兼容的正则,降级到v3.x稳定版本可解决问题:- 进入项目的functions目录:
cd functions - 执行
npm install firebase-functions@3.24.1 - 重新尝试部署或启动模拟器
- 进入项目的functions目录:
临时应急修复(不推荐长期使用)
找到functions/node_modules/firebase-functions/lib/function-builder.js文件的第96行,将原正则替换为兼容旧Node.js的写法:/^[a-z][a-z0-9_-]{0,62}$/i注意:后续更新依赖时该修改会被覆盖,仅作为临时方案使用。
内容的提问来源于stack exchange,提问作者Hammad Ahmed
相关产品推荐
相关产品推荐

