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

部署Firebase JavaScript函数时遭遇Parsing error: Unexpected token =>错误的排查求助

排查Firebase函数中Parsing error: Unexpected token =>的问题

嘿,我来帮你拆解这个问题!你遇到的Parsing error: Unexpected token =>确实有点迷惑——毕竟Node.js 14.16.1完全支持箭头函数和async/await语法,咱们一步步来找出根源:

首先修正代码里的明显语法问题

虽然这不是直接触发箭头函数报错的原因,但这些小问题会让语法解析器混乱,间接引发误报:

  • 模板字符串用错引号:你代码里的"users/${userId1}/name"用了双引号,但模板字符串必须用反引号`,不然JS会把${userId1}当成普通文本,而不是变量插值。
  • 多余空格导致的解析异常:你写的. onWrite(async (event) =>里,onWrite()前面多了一个空格,应该改成.onWrite(async (event) =>。
  • 文档数据获取遗漏:你直接用await admin.firestore().doc(...).get()得到的是文档快照,需要调用.data()才能拿到里面的name字段内容。

修正后的代码示例:

exports.sendFriendRequest = functions.firestore.document("requests/{rUid}").onWrite(async (event) => {
  const userId1 = event.after.get("userId1");
  const userId2 = event.after.get("userId2");
  
  // 修正模板字符串引号,同时获取文档数据
  const userNameDoc = await admin.firestore().doc(`users/${userId1}/name`).get();
  const userName1 = userNameDoc.data();
  console.log(userName1);
  
  const title = "New friend request";
  // 同样修正模板字符串
  const content = `${userName1} wants to be your friend`;
  console.log(content);
  
  const user2Doc = await admin.firestore().doc(`users/${userId2}`).get();
  const fcmToken = user2Doc.get("fcm");
  
  const message = {
    notification: {
      title: title,
      body: content,
    },
    token: fcmToken,
  };
  
  const response = await admin.messaging().send(message);
  console.log(response);
});

核心排查:ESLint/语法检查工具的配置问题

Node.js 14支持箭头函数,但你的代码检查工具(大概率是ESLint)可能没配置正确的目标环境,导致它误以为你在用不支持的语法:

  • 检查项目根目录下的.eslintrc(或.eslintrc.json)文件,确保:
    • env字段包含node: true,告诉ESLint你在Node环境下写代码
    • parserOptions.ecmaVersion设为12(对应Node.js 14支持的ES版本)或"latest"
      示例配置:
    {
      "env": {
        "node": true,
        "es2021": true
      },
      "parserOptions": {
        "ecmaVersion": "latest"
      },
      "extends": "eslint:recommended"
    }
    
  • 如果是Firebase Functions默认生成的项目,它自带的ESLint配置可能偏保守,可以手动调整上述参数,或者暂时关闭ESLint的语法检查(比如注释掉.eslintrc)来测试是否是配置问题。

额外验证步骤

  1. 运行firebase emulators:start启动本地模拟器,测试函数是否能正常解析运行
  2. 确认Firebase Functions的运行时版本是Node.js 14:在firebase.json的functions字段里检查runtime配置,或者在函数目录的package.json里确认engines.node设为14.x

内容的提问来源于stack exchange,提问作者Opr Vld

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.29 13:19:11