Flutter Web Firebase Auth手机号验证报错:TypeError读取settings属性失败
Flutter Web Firebase Auth手机号验证报错:TypeError: Cannot read properties of undefined (reading 'settings') 解决方法
这个错误本质是Web端Firebase Auth初始化不完整、配置缺失或版本兼容问题导致的,以下是具体修复步骤:
检查Web端Firebase配置完整性
确保web/index.html中正确引入Firebase Auth SDK并完成初始化,配置信息要和Firebase控制台一致:<!-- 在index.html的body末尾添加 --> <script type="module"> import { initializeApp } from "https://www.gstatic.com/firebasejs/9.22.0/firebase-app.js"; import { getAuth } from "https://www.gstatic.com/firebasejs/9.22.0/firebase-auth.js"; const firebaseConfig = { apiKey: "你的API_KEY", authDomain: "你的AUTH_DOMAIN", projectId: "你的PROJECT_ID", storageBucket: "你的STORAGE_BUCKET", messagingSenderId: "你的MESSAGING_SENDER_ID", appId: "你的APP_ID" }; const app = initializeApp(firebaseConfig); const auth = getAuth(app); </script>若使用FlutterFire初始化,需保证
Firebase.initializeApp()在Web端执行成功。确认依赖版本兼容性
检查pubspec.yaml中firebase_core和firebase_auth的版本,建议使用最新稳定版避免兼容问题:dependencies: flutter: sdk: flutter firebase_core: ^2.15.0 firebase_auth: ^4.10.0优化验证代码逻辑
原代码混用await和.then()易引发异步逻辑问题,统一使用async/await写法,并确保auth是正确初始化的实例:void verifyPhoneNumber() async { try { final confirmationResult = await FirebaseAuth.instance.signInWithPhoneNumber("+91$phoneNumber"); final verificationId = confirmationResult.verificationId; // 后续可添加验证码输入与验证逻辑 } catch (error) { print('验证出错: $error'); } }检查Firebase控制台Auth设置
登录Firebase控制台,进入Authentication -> Sign-in method,确认已启用Phone登录方式,且Web应用域名已添加到授权域名列表中。
内容的提问来源于stack exchange,提问作者User Technozer
相关产品推荐
相关产品推荐

