Flutter开发测验应用运行时报TypeError: Cannot read properties of undefined (reading 'app')错误
问题解决方案
该报错核心原因为Flutter Web环境下Firebase未完成初始化就调用了Cloud Firestore相关服务,可按以下步骤排查修复:
1. 检查依赖版本兼容性
确认pubspec.yaml中firebase_core、cloud_firestore、firebase_core_web、cloud_firestore_web四个依赖的版本互相兼容,避免跨大版本混用,推荐使用同一时期发布的稳定版本组合。
2. 补全Firebase初始化逻辑
方式一:main函数内初始化(新版SDK推荐方案)
修改main.dart文件,保证runApp执行前已完成Firebase初始化,示例代码如下:
import 'package:flutter/material.dart'; import 'package:firebase_core/firebase_core.dart'; // 该配置文件可通过flutterfire_cli工具自动生成,也可手动配置对应平台参数 import 'firebase_options.dart'; void main() async { WidgetsFlutterBinding.ensureInitialized(); await Firebase.initializeApp( options: DefaultFirebaseOptions.currentPlatform, ); runApp(const MyApp()); }
方式二:Web侧index.html初始化(适配旧版SDK)
如果使用手动引入JS SDK的方式,在web/index.html的body标签末尾、main.dart.js引入之前,先引入对应版本的Firebase核心与Firestore SDK,再填入从Firebase控制台获取的Web项目配置参数完成初始化即可。
3. 清理缓存重新构建
完成配置修改后执行以下命令清理旧构建缓存,再运行项目验证:
flutter clean flutter pub get flutter run -d chrome
额外排查点
- 确认业务代码中没有在
Firebase.initializeApp执行完成前就调用FirebaseFirestore.instance相关逻辑,所有Firebase服务调用都要放在初始化完成之后 - 手动填写的Firebase配置参数要和控制台中Web项目的参数完全一致,不要有拼写或复制遗漏问题
内容的提问来源于stack exchange,提问作者Nathan
相关产品推荐
相关产品推荐

