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

Flutter Web初始化FlutterFire出现Connection failed错误如何解决

问题根因

你遇到的报错核心原因是依赖版本不匹配:

  • 你pubspec.yaml中引入的firebase_core: ^1.5.0属于FlutterFire 1.x版本,仅兼容Firebase JavaScript SDK 8.x版本
  • 你index.html中导入的是9.0.0的模块化版本Firebase JS SDK,接口和暴露规则完全不兼容,导致FlutterFire初始化时抛出异常,触发了snapshot.hasError的错误分支
  • 注释错误判断后能正常运行是巧合:初始化错误抛出后,后续Firebase JS SDK刚好加载完成,后续业务逻辑调用时已经完成初始化,但这种状态非常不稳定,随时可能复现报错

修复步骤

  1. 替换index.html中的Firebase导入代码,使用匹配的8.x版本:
<!-- 替换原有的type="module"的Firebase相关script代码 -->
<script src="https://www.gstatic.com/firebasejs/8.10.0/firebase-app.js"></script>
<script src="https://www.gstatic.com/firebasejs/8.10.0/firebase-analytics.js"></script>
<script>
  const firebaseConfig = {
    // 保留你原有的Firebase配置不变
    apiKey: "********",
    authDomain: "********",
    projectId: "*********",
    storageBucket: "************",
    messagingSenderId: "******",
    appId: "**************",
    measurementId: "******"
  };
  firebase.initializeApp(firebaseConfig);
  firebase.analytics();
</script>
  1. 建议保留错误判断分支,增加错误打印方便后续排查:
if (snapshot.hasError) {
  // 开发环境会在控制台输出具体错误原因
  debugPrint('Firebase初始化错误: ${snapshot.error}');
  return Center(
    child: Text('Connection failed: ${snapshot.error.toString()}'),
  );
}
  1. 可选优化:删除index.html末尾重复的<script src="main.dart.js" type="application/javascript"></script>代码,你前面的Service Worker逻辑已经包含了加载main.dart.js的逻辑,重复引入可能导致额外异常。

额外说明

如果你后续想要使用Firebase JS SDK 9.x版本,需要将所有FlutterFire相关依赖(包括firebase_core)升级到2.0.0及以上版本,才支持v9的模块化导入规则。

内容的提问来源于stack exchange,提问作者Adeel Nazim

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 15:36:01