You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Firebase Cloud Functions部署报Unexpected token '?'语法错误

问题根因

核心报错是云端Node.js运行时版本与依赖包版本不兼容:

  • 你项目package.json的engines字段声明Cloud Functions使用Node.js 12作为运行环境,Firebase部署时会严格按照这个配置拉起对应版本的Node实例运行代码。
  • 你安装的firebase-admin@11.x版本最低要求Node.js 14及以上运行环境,SDK代码中使用了ES2020标准的空值合并运算符??,Node.js 12的CommonJS模块加载器不识别该语法,在加载依赖阶段直接抛出SyntaxError: Unexpected token '?',导致函数启动失败。
    你本地升级到Node 16/18仅影响本地开发调试环境,不会改变云端函数的运行时版本,这也是本地调试无异常、部署后云端报错的直接原因。

另外你的函数代码还有一个隐性逻辑问题:onCall方法没有接收异步操作返回的Promise,会导致删除用户操作还未执行完成,函数实例就可能被运行时回收,出现操作偶发失败的问题。

解决方案

方案1(推荐):升级云端运行时到Node 16

Node 12运行时已经被Firebase官方停止支持,直接升级到长期支持的Node 16版本是最稳妥的方案,操作步骤:

  1. 修改package.json中的engines配置:
    "engines": {
      "node": "16"
    }
    
  2. 在functions目录下执行命令,升级firebase-functions到适配Node 16的稳定版本:
    npm install firebase-functions@latest
    
  3. 修正函数入口代码,补全Promise返回和错误抛出逻辑,避免运行时异常:
    const functions = require('firebase-functions');
    const admin = require('firebase-admin');
    admin.initializeApp();
    
    exports.deleteUser = functions.https.onCall((data, context) => {
        const userID = data.userID;
        // 返回Promise让运行时等待异步操作执行完成
        return admin.auth().deleteUser(userID)
        .then(() => {
            console.log('Successfully deleted userID: ', userID);
            return true
        })
        .catch((error) => {
            console.log('Error deleting user: ', error);
            // 抛出标准化错误给调用端,不吞掉异常
            throw new functions.https.HttpsError('internal', 'Failed to delete user', error);
        });
    });
    
  4. 重新执行部署命令即可:
    firebase deploy --only functions:deleteUser
    

方案2:降级firebase-admin适配Node 12

如果暂时无法升级Node运行时,可以将firebase-admin降级到兼容Node 12的v10大版本,操作步骤:

  1. 在functions目录下执行命令安装固定版本的依赖:
    npm install firebase-admin@10.3.0 --save-exact
    
  2. 建议删除node_modules目录和package-lock.json文件后重新执行npm install,确保依赖版本正确无冲突。
  3. 按方案1中的步骤修正函数代码的Promise返回问题后,重新部署即可。
    注意:该方案仅做临时兼容使用,Node 12运行时不再接收安全更新和功能支持,长期运行存在稳定性和安全风险,建议尽快升级到更高版本的Node运行时。

内容的提问来源于stack exchange,提问作者Lance Samaria

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.29 13:51:27