Flutter Web部署到Firebase后报错No Firebase App '[DEFAULT]'未创建
问题排查与解决方案
- 脚本加载顺序问题修复
你当前的Firebase初始化代码放在type="module"的脚本中,这类脚本默认延迟执行,会晚于普通的main.dart.js脚本运行,导致Dart代码执行时Firebase还未完成初始化。
修改方案:将main.dart.js的加载逻辑移到Firebase初始化完成之后,参考代码如下:
<script> // 移除type="module"属性,改为同步执行的普通脚本 const firebaseConfig = { // 替换为Firebase控制台中你项目的实际配置,不要保留占位符 apiKey: "你的项目apiKey", authDomain: "你的项目authDomain", projectId: "你的项目projectId", storageBucket: "你的项目storageBucket", messagingSenderId: "你的项目messagingSenderId", appId: "你的项目appId" }; // 先完成Firebase初始化 firebase.initializeApp(firebaseConfig); // 再动态加载main.dart.js const mainScript = document.createElement('script'); mainScript.src = 'main.dart.js'; mainScript.type = 'application/javascript'; document.body.appendChild(mainScript); // Service Worker注册逻辑保留 if ('serviceWorker' in navigator) { window.addEventListener('flutter-first-frame', function () { navigator.serviceWorker.register('flutter_service_worker.js'); }); } </script> <!-- 删掉原来单独引入的<script src="main.dart.js"... 一行 -->
确认配置有效性
检查部署后的index.html中firebaseConfig没有保留{...}占位符,已经替换为你项目的真实配置。如果本地测试时用了环境变量注入配置,要确认部署流水线已经正确将配置填充到了生产环境的index.html中。版本兼容性校验
你当前使用的firebase_core: ^1.1.1属于FlutterFire 1.x版本,对应兼容的Firebase JS SDK版本就是8.x系列,你正在使用的8.6.1版本匹配正确,无需升级到9.x以上版本,避免出现API不兼容问题。缓存问题排查
部署完成后按Ctrl+Shift+R(Mac系统为Cmd+Shift+R)硬刷新页面,或者使用浏览器无痕模式访问,避免本地缓存的旧资源导致问题。也可以登录Firebase控制台托管页面,确认最新版本已经部署成功。可选:Dart侧直接初始化(更稳定)
如果以上方案都无效,可以移除HTML中的Firebase初始化逻辑,直接在Dart代码中传入配置完成初始化,避免跨脚本的加载顺序问题:
import 'package:firebase_core/firebase_core.dart'; import 'package:flutter/foundation.dart'; void main() async { WidgetsFlutterBinding.ensureInitialized(); if (kIsWeb) { await Firebase.initializeApp( options: const FirebaseOptions( apiKey: "你的项目apiKey", authDomain: "你的项目authDomain", projectId: "你的项目projectId", storageBucket: "你的项目storageBucket", messagingSenderId: "你的项目messagingSenderId", appId: "你的项目appId", ), ); } else { await Firebase.initializeApp(); } runApp(MyApp()); }
内容的提问来源于stack exchange,提问作者Tobi
相关产品推荐
相关产品推荐

