部署Firebase Node.js函数遇语法错误:Unexpected token '?'
解决Firebase函数部署时的
SyntaxError: Unexpected token '?'错误 错误原因
你遇到的??是ES2020引入的空值合并运算符,Node.js 12及更早版本不支持这个语法。虽然你的package.json里engines配置了node: "16",但实际执行部署时使用的Node.js版本可能低于14,导致无法解析该语法。
解决方案
1. 检查本地Node.js版本
在终端运行:
node -v
如果输出版本低于14.x,需要切换到16.x版本。可以用版本管理工具(比如nvm)切换:
nvm install 16 nvm use 16
2. 确认Firebase CLI使用的Node.js版本
Firebase CLI可能自带独立的Node.js环境,和你本地全局版本不一致。可以通过以下方式指定Firebase函数使用的Node版本:
- 确保
functions/package.json的engines字段配置正确:"engines": { "node": "16" } - 部署时强制指定Node版本:
FIREBASE_NODEJS_VERSION=16 firebase deploy --only functions
3. 核对firebase-admin版本兼容性
如果你的firebase-admin版本过高,可能要求更高的Node.js版本(比如部分新版本要求Node 18+)。可以降级到适配Node 16的稳定版本,例如:
npm install firebase-admin@11.11.0 --save
4. 清理依赖重新安装
删除旧依赖和锁文件,重新安装确保版本一致:
rm -rf node_modules package-lock.json npm install
内容的提问来源于stack exchange,提问作者akm
相关产品推荐
相关产品推荐

