Tengo una situación cableada, he estado luchando por un tiempo con esto.
Implementé el chat en la aplicación utilizando la base de datos en tiempo real de Firebase. Esta solución funciona bien en Android, tanto en el modo de recarga en vivo como en el modo de compilación, y también funciona en el modo de recarga en vivo ( ionic cordova run ios -l --external ) en iOS, pero no no funciona cuando se construye la aplicación. ionic cordova build ios
Estoy probando esto en el mismo dispositivo y el mismo código, pero falla en el modo de compilación.
Al depurar mucho, encontré un error que se muestra en la consola cuando se realiza la llamada a la base de datos de Firebase, pero no estoy seguro de cuál es el problema y dónde está exactamente.
[Error] ERROR – Error: Uncaught (in promise): TypeError: undefined is not an object (evaluating 'BuildInfo.packageName') attachCallbackListeners@ionic://localhost/vendor.js:116999:39 @ionic://localhost/vendor.js:116900:39 generatorResume@[native code] asyncGeneratorStep@ionic://localhost/vendor.js:212788:24 _next@ionic://localhost/vendor.js:212810:27 @ionic://localhost/vendor.js:212817:12 ZoneAwarePromise@ionic://localhost/polyfills.js:1419:37 @ionic://localhost/vendor.js:212806:23 generatorResume@[native code] asyncGeneratorStep@ionic://localhost/vendor.js:212788:24 _next@ionic://localhost/vendor.js:212810:27 run@ionic://localhost/polyfills.js:166:49 @ionic://localhost/polyfills.js:1308:39 runTask@ionic://localhost/polyfills.js:210:57 drainMicroTaskQueue@ionic://localhost/polyfills.js:614:42 invokeTask@ionic://localhost/polyfills.js:523:40 Error: Uncaught (in promise): TypeError: undefined is not an object (evaluating 'BuildInfo.packageName') attachCallbackListeners@ionic://localhost/vendor.js:116999:39 @ionic://localhost/vendor.js:116900:39 generatorResume@[native code] asyncGeneratorStep@ionic://localhost/vendor.js:212788:24 _next@ionic://localhost/vendor.js:212810:27 @ionic://localhost/vendor.js:212817:12 ZoneAwarePromise@ionic://localhost/polyfills.js:1419:37 @ionic://localhost/vendor.js:212806:23 generatorResume@[native code] asyncGeneratorStep@ionic://localhost/vendor.js:212788:24 _next@ionic://localhost/vendor.js:212810:27 run@ionic://localhost/polyfills.js:166:49 @ionic://localhost/polyfills.js:1308:39 runTask@ionic://localhost/polyfills.js:210:57 drainMicroTaskQueue@ionic://localhost/polyfills.js:614:42 invokeTask@ionic://localhost/polyfills.js:523:40resolvePromise — zone.js:1213resolvePromise — zone.js:1167(anonymous function) — zone.js:1279onInvokeTask — core.js:28659runTask — zone.js:178drainMicroTaskQueue — zone.js:582promiseReactionJob defaultErrorLogger (vendor.js:54029) handleError (vendor.js:54077) next (vendor.js:76833) next __tryOrUnsub (vendor.js:207784) next (vendor.js:207723) _next (vendor.js:207673) next (vendor.js:207650) next (vendor.js:207434) emit (vendor.js:73485) run (polyfills.js:166) onHandleError (vendor.js:76248) runGuarded (polyfills.js:179) (anonymous function) (polyfills.js:1106) drainMicroTaskQueue (polyfills.js:621) promiseReactionJobel código que activa la llamada a firebase rdb
this.db.database.ref(this.messageMetaData.fireBaseString).orderByChild('date') .on('value', async (resp) => { this.messageList = snapshotToArray(resp); await this.iterateImages(); this.loading = false; if (this.playSound != false) { this.playChatSound(); } this.playSound = true; setTimeout(() => this.content.scrollToBottom(100)); });He intentado agregar declaraciones de error pero no veo ningún otro error. Visto sugerencia o soluciones para proceder.
Complementos utilizados
" @angular/fire": "^7.0.4", "firebase": "^9.0.2", "angularfire2": "^5.4.2", "firebase-tools": "^7.12.0",información iónica
Ionic: Ionic CLI : 6.17.0 (/usr/local/lib/node_modules/@ionic/cli) Ionic Framework : @ionic/angular 5.9.3 @angular-devkit/build-angular : 12.2.5 @angular-devkit/schematics : 11.2.14 @angular/cli : 12.2.5 @ionic/angular-toolkit : 3.1.1 Cordova: Cordova CLI : 10.0.0 Cordova Platforms : ios 6.1.1 Cordova Plugins : cordova-plugin-ionic-keyboard 2.2.0, cordova-plugin-ionic-webview 4.2.1, (and 29 other plugins) Utility: cordova-res : not installed globally native-run (update available: 1.5.0) : 1.4.0 System: Android SDK Tools : 26.1.1 (/Users/saikiran/Library/Android/sdk) ios-deploy : 1.11.4 ios-sim : 8.0.2 NodeJS : v14.18.0 (/usr/local/bin/node) npm : 6.14.15 OS : macOS Monterey Xcode : Xcode 13.2.1 Build version 13C100No soy una persona iónica, pero según el error:
undefined is not an object Está intentando pasar undefined en lugar de un objeto {} . Me imagino que this.messageMetaData.fireBaseString no está definido o resp no está definido.
Verifique la primera variable, y podría probar esto para la segunda:
.on('value', async (resp) => { if (resp) { ... } ... });FWI:
Creo que necesitas actualizar:
"angularfire2": "^5.4.2",Este paquete ya ni siquiera tiene el mismo nombre.