Flutter初始化Firebase提示FirebaseOptions cannot be null如何解决
问题诱因
你遇到的报错核心原因如下:
- 你使用的
firebase_core: ^1.10.2版本,在Web端运行时调用Firebase.initializeApp()默认要求显式传入options参数,你当前没有传入该参数。 - 你在
index.html中使用ES模块化方式引入的Firebase v9 SDK,无法被旧版本的firebase_core_web插件自动识别读取配置,导致插件获取不到Firebase配置参数抛出空异常。
解决方案
方案1:显式传入Firebase配置参数
直接在Dart层初始化时传入你的Firebase项目配置,修改main.dart的初始化代码即可:
void main() async { WidgetsFlutterBinding.ensureInitialized(); await Firebase.initializeApp( // 下方参数替换为你自己Firebase项目的实际配置值 options: const FirebaseOptions( apiKey: "xxx", authDomain: "xxx", projectId: "xx", storageBucket: "exxx", messagingSenderId: "xxx", appId: "xxx", measurementId: "xxx", ), ); runApp(SignUpApp()); }
该方案不需要修改index.html的配置,修改后直接运行即可生效。
方案2:调整index.html的Firebase引入方式
如果不想在Dart层写配置,你可以将index.html中现在使用的模块化Firebase v9引入代码,替换为兼容旧版插件的全局引入方式:
- 删除
index.html末尾那段type="module"的script标签内容 - 替换为以下代码,注意替换成你自己的Firebase配置:
<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-auth.js"></script> <script> var firebaseConfig = { apiKey: "xxx", authDomain: "xxx", projectId: "xx", storageBucket: "exxx", messagingSenderId: "xxx", appId: "xxx", measurementId: "xxx" }; firebase.initializeApp(firebaseConfig); </script>
修改完成后main.dart中不需要传入options参数即可正常初始化。
注意事项
如果后续升级firebase_core到2.0及以上版本,推荐通过官方CLI工具自动生成全平台通用的配置文件,无需手动填写各端配置。
内容的提问来源于stack exchange,提问作者paras 231096
相关产品推荐
相关产品推荐

