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

升级Firebase与GeoFire后调用set函数出现pieceNum_未定义错误求助

问题

升级旧Ionic Angular应用时,已将Firebase升级至9.23.0、GeoFire升级至6.0.0,调用GeoFire的set函数(传入ID与坐标数组)时出现以下错误,旧版本GeoFire运行正常,且无法回滚依赖。

错误信息:

error =  TypeError: Cannot read properties of undefined (reading 'pieceNum_')
    at qt (geofire.min.js:590:980)
    at geofire.min.js:1299:1686
    at rt (geofire.min.js:361:2620)
    at Qr (geofire.min.js:1299:1645)
    at As (geofire.min.js:1397:3182)
    at e.set (geofire.min.js:1430:9558)

当前环境信息(ionic info输出):

Ionic:

   Ionic CLI                     : 7.1.1 (/Users/username/.nvm/versions/node/v20.2.0/lib/node_modules/@ionic/cli)
   Ionic Framework               : @ionic/angular 5.9.4
   @angular-devkit/build-angular : 13.3.11
   @angular-devkit/schematics    : 13.3.11
   @angular/cli                  : 13.3.11
   @ionic/angular-toolkit        : 6.1.0

Capacitor:

   Capacitor CLI      : 5.5.1
   @capacitor/android : 5.5.1
   @capacitor/core    : 5.5.1
   @capacitor/ios     : 5.5.1

Cordova:

   Cordova CLI       : 12.0.0 (cordova-lib@12.0.1)
   Cordova Platforms : android 9.1.0, browser 6.0.0, ios 6.2.0
   Cordova Plugins   : cordova-plugin-ionic-webview 4.2.1, (and 3 other plugins)

Utility:

   cordova-res                          : 0.15.4
   native-run (update available: 2.0.0) : 1.7.4

System:

   ios-sim : 8.0.2
   NodeJS  : v20.2.0 (/Users/username/.nvm/versions/node/v20.2.0/bin/node)
   npm     : 9.6.6
   OS      : macOS Unknown
   Xcode   : Xcode 15.0.1 Build version 15A507
解决建议
  • 调整GeoFire初始化方式:GeoFire 6.x适配Firebase 9+的模块化API,必须基于Firebase 9的getDatabase获取实例后初始化,不能用旧的命名空间方式:
    import { getDatabase } from "firebase/database";
    import { GeoFire } from "geofire-common";
    
    const db = getDatabase();
    const geoFire = new GeoFire(db.ref("your-location-node-path"));
    
  • 校验set函数参数合法性:确认传入的坐标是严格的[纬度数值, 经度数值]数组,ID为非空字符串,避免格式错误触发内部逻辑异常:
    // 正确参数示例
    geoFire.set("user_123", [37.7853889, -122.4056973])
      .then(() => console.log("位置更新成功"))
      .catch(err => console.error("更新失败:", err));
    
  • 清理依赖缓存重装:执行以下命令清除缓存并重新安装依赖,解决可能存在的版本不兼容缓存问题:
    rm -rf node_modules package-lock.json
    npm install
    
  • 对齐Angular与Firebase版本:当前Angular 13.x可适配Firebase 9,但建议升级@angular/fire到对应兼容版本(如7.5.x),确保模块调用逻辑匹配:
    npm install @angular/fire@^7.5.0 --save
    
  • 用未压缩源码排查:临时替换geofire.min.js为未压缩版,查看更清晰的错误栈,定位pieceNum_相关代码的触发条件,确认是参数还是初始化环节的问题。

内容的提问来源于stack exchange,提问作者Sanjay Tibrewal

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.02 13:53:18