Flutter Web迁移Google账号后报No Firebase App '[DEFAULT]'不存在错误
Flutter Web迁移新Firebase账号后
No Firebase App '[DEFAULT]' has been created报错原因及解决方案 核心原因
该报错的本质是Firebase初始化逻辑未成功执行,没有创建默认的Firebase实例,导致Flutter侧调用相关接口时找不到实例。具体问题如下:
- API语法与SDK版本不匹配:你引入的是8.x版本的Firebase传统CDN脚本,这类脚本会将SDK挂载到全局
window.firebase对象上,不支持ES模块化导入语法。你当前的初始化代码直接使用了Firebase 9+版本的import模块化写法,在普通script标签中该语法会直接抛出语法错误,导致后续initializeApp初始化逻辑完全没有执行。 - SDK版本冲突与重复引入:你重复引入了
firebase-firestore等SDK,且版本号不统一(同时存在8.9.1、8.4.2、8.2.4三个版本),版本冲突会导致全局Firebase对象异常,即使初始化语法正确也可能执行失败。 - 若你当前填写的新账号Firebase配置有缺项、参数错误,也会导致初始化失败。
修复方案
- 替换初始化逻辑为匹配8.x版本的写法,删除所有模块化import相关代码,修改后的初始化脚本如下:
// 替换为你的新Firebase账号完整配置,不要留空参数 const firebaseConfig = { apiKey: "你的新账号apiKey", authDomain: "你的新账号authDomain", projectId: "你的新账号projectId", storageBucket: "你的新账号storageBucket", messagingSenderId: "你的新账号messagingSenderId", appId: "你的新账号appId", measurementId: "你的新账号measurementId" }; // 使用8.x版本的全局API完成初始化 firebase.initializeApp(firebaseConfig); const analytics = firebase.analytics();
- 统一所有Firebase SDK的版本号,删除重复引入的资源,修改后的CDN引入部分如下:
<!-- 统一使用8.9.1版本,删除其他重复、不同版本的Firebase SDK引入 --> <script src="https://www.gstatic.com/firebasejs/8.9.1/firebase-app.js"></script> <script src="https://www.gstatic.com/firebasejs/8.9.1/firebase-analytics.js"></script> <script src="https://www.gstatic.com/firebasejs/8.9.1/firebase-firestore.js"></script> <script src="https://www.gstatic.com/firebasejs/8.9.1/firebase-messaging.js"></script> <script src="https://www.gstatic.com/firebasejs/8.9.1/firebase-storage.js"></script>
- 确认新账号的Firebase配置参数全部填写正确,没有缺漏。
- 清理浏览器缓存后重新启动项目即可。
内容的提问来源于stack exchange,提问作者Bryan Budelon Dorneles
相关产品推荐
相关产品推荐

