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

Firebase Cloud Function部署报错:max-len与ENOENT问题求助

解决Firebase Cloud Functions部署错误

1. ESLint行长度超限错误(max-len)

错误提示:9:1 error This line has a length of 173. Maximum allowed is 80,原因是deviceTokens的字符串长度超过了ESLint默认行长度限制。

解决方法二选一:

  • 拆分长字符串:将token拆分为多行拼接,符合行长度要求:
    const deviceTokens = "exiZaKIsSvesZ9U8_vDkXP:" +
                         "................-gVbwWRBJD8x8x53pc2wHrtiFYHknJs-4ixTazX_n3";
    
  • 调整ESLint配置:在functions目录下的.eslintrc.js中修改max-len规则,放宽行长度限制:
    module.exports = {
      // 其他配置项
      rules: {
        "max-len": ["error", { code: 200 }] // 设为满足需求的长度值
      }
    };
    

2. ENOENT执行错误

错误提示:Error: spawn npm --prefix "%RESOURCE_DIR%" run lint ENOENT,核心原因是Node.js版本不兼容或环境配置问题:

  • 降级Node.js版本:Firebase Cloud Functions官方推荐使用Node.js 18或20版本(v21不在支持列表内),用nvm切换到兼容版本:
    nvm install 18
    nvm use 18
    
  • 验证functions目录配置:确保functions文件夹下存在package.json,且包含lint脚本:
    {
      "scripts": {
        "lint": "eslint ."
      }
    }
    
  • 修正部署命令:Windows环境下$RESOURCE_DIR语法不兼容,直接使用Firebase CLI默认部署命令即可自动处理预部署流程:
    firebase deploy --only functions
    

额外代码逻辑修正

onCreate触发器的参数应为文档快照(snapshot)而非change(change是onUpdate/onWrite的参数),修正后避免潜在运行错误:

export const onOrderCreate = functions.firestore
  .document("orders/{orderID}")
  .onCreate((snapshot) => {
    const deviceTokens = "exiZaKIsSvesZ9U8_vDkXP:" +
                         "................-gVbwWRBJD8x8x53pc2wHrtiFYHknJs-4ixTazX_n3";
    const after = snapshot.data();
    const payload = {
      data: {
        title: "New Notification",
        body: after.title,
      },
      token: deviceTokens,
    };
    return admin
      .messaging()
      .send(payload)
      .catch((error) => {
        console.log("FCM Failed: ", error);
      });
  });

内容的提问来源于stack exchange,提问作者Joab Eliot

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.29 20:42:17