VSCode中Flutter/Firebase项目无法运行及配置报错求助
Flutter/Firebase项目在VSCode中无法运行,启动时程序无响应
我在VSCode中运行Flutter/Firebase项目时遇到问题,每次尝试启动程序都会停止响应。
项目初始化时执行的命令
flutter pub add firebase_core flutter pub add firebase_auth flutter pub add cloud_firestore flutter pub add provider flutter pub add firebase_ui_auth dart pub global activate flutterfire_cli flutterfire configure
出现问题后尝试的修复操作
flutter clean . flutter pub cache repair
项目main.dart代码
import 'package:bos_proje/firebase_options.dart'; import 'package:cloud_firestore/cloud_firestore.dart'; import 'package:firebase_core/firebase_core.dart'; import 'package:flutter/material.dart'; String str = ""; void main() async { WidgetsFlutterBinding.ensureInitialized(); await Firebase.initializeApp( options: DefaultFirebaseOptions.currentPlatform, ); var db = FirebaseFirestore.instance; // 创建一个包含姓名和出生年份的用户数据 final user = <String, dynamic>{ "first": "Ada", "last": "Lovelace", "born": 1815 }; // 添加新文档并获取自动生成的ID db.collection("users").add(user).then((DocumentReference doc) => str= 'Document ID: ${doc.id}'); runApp(const MainApp()); } class MainApp extends StatelessWidget { const MainApp({super.key}); @override Widget build(BuildContext context) { return MaterialApp( home: Scaffold( body: Center( child: Text(str), ), ), ); } }
后续错误详情
重新安装Flutter后的编译错误
调试控制台输出:
Launching lib\main.dart on Chrome in debug mode... /C:/Users/gacwi/AppData/Local/Pub/Cache/hosted/pub.dev/firebase_core_web-2.11.4/lib/src/firebase_core_web.dart:152:43: Error: The getter 'winydowVar' isn't defined for the class 'FirebaseCoreWeb'. - 'FirebaseCoreWeb' is from 'package:firebase_core_web/firebase_core_web.dart' ('/C:/Users/gacwi/AppData/Local/Pub/Cache/hosted/pub.dev/firebase_core_web-2.11.4/lib/firebase_core_web.dart'). Try correcting the name to the name of an existing getter, or defining a getter or field named 'winydowVar'. globalContext.delete('ff_trigger_$winydowVar'.toJS); ^^^^^^^^^^ Failed to compile application.
更换Firebase项目后的配置错误
终端输出:
PS D:\flutter_projeler\denemeler\bos_proje> flutterfire configure i Found 3 Firebase projects. ✔ Select a Firebase project to configure your Flutter application with · fir-test-75a53 (FireBaseTest) ✔ Which platforms should your configuration support (use arrow keys & space to select)? · android, ios, macos, web i Firebase android app com.example.bos_proje is not registered on Firebase project fir-test-75a53. i Registered a new Firebase android app on Firebase project fir-test-75a53. FirebaseCommandException: An error occured on the Firebase CLI when attempting to run a command. COMMAND: firebase apps:create android bos_proje (android) --package-name=com.example.bos_proje --json --project=fir-test-75a53 ERROR: Failed to create Android app for project fir-test-75a53. See firebase-debug.log for more info.
解决方案
1. 修复firebase_core_web拼写错误问题
这个错误是因为firebase_core_web包代码里出现了拼写错误(winydowVar应为windowVar),可以通过两种方式解决:
- 直接修改本地缓存文件:找到路径
C:/Users/gacwi/AppData/Local/Pub/Cache/hosted/pub.dev/firebase_core_web-2.11.4/lib/src/firebase_core_web.dart,将第152行的winydowVar改为windowVar。 - 升级
firebase_core包到最新版本,新版本已修复该错误:flutter pub upgrade firebase_core
2. 解决Firebase项目配置错误
针对flutterfire configure创建Android应用失败的问题:
- 更新Firebase CLI到最新版本:
npm install -g firebase-tools - 手动在Firebase控制台创建Android应用,下载
google-services.json文件并放到项目的android/app目录下,再重新运行flutterfire configure选择已创建的应用。
3. 代码优化建议
原代码中str变量在异步回调中赋值,而runApp同步执行会导致UI显示为空,建议改用FutureBuilder处理异步操作:
import 'package:bos_proje/firebase_options.dart'; import 'package:cloud_firestore/cloud_firestore.dart'; import 'package:firebase_core/firebase_core.dart'; import 'package:flutter/material.dart'; void main() async { WidgetsFlutterBinding.ensureInitialized(); await Firebase.initializeApp( options: DefaultFirebaseOptions.currentPlatform, ); runApp(const MainApp()); } class MainApp extends StatelessWidget { const MainApp({super.key}); @override Widget build(BuildContext context) { return MaterialApp( home: Scaffold( body: Center( child: FutureBuilder<String>( future: _addUser(), builder: (context, snapshot) { if (snapshot.connectionState == ConnectionState.waiting) { return const CircularProgressIndicator(); } else if (snapshot.hasError) { return Text('添加用户失败: ${snapshot.error}'); } else { return Text(snapshot.data ?? '无文档ID'); } }, ), ), ), ); } Future<String> _addUser() async { final db = FirebaseFirestore.instance; final user = <String, dynamic>{ "first": "Ada", "last": "Lovelace", "born": 1815 }; final doc = await db.collection("users").add(user); return 'Document ID: ${doc.id}'; } }
内容的提问来源于stack exchange,提问作者Güven Acar
相关产品推荐
相关产品推荐

