Flutter Web中Firebase.initializeApp初始化失败,报语法错误求助
问题场景
Flutter Web应用在初始化Firebase后无法启动,抛出Uncaught SyntaxError: Invalid left-hand side in assignment错误,Android和iOS平台运行完全正常,尝试降级Firebase版本后问题仍未解决。错误堆栈信息如下:
localhost/:1 Uncaught SyntaxError: Invalid left-hand side in assignment
at [dartx.append] (html_dart2js.dart:23474:33)
at firebase_core_web.FirebaseCoreWeb.new.injectSrcScript (firebase_core_web.dart:138:14)
at injectSrcScript.next ()
at runBody (async_patch.dart:84:54)
at Object._async [as async] (async_patch.dart:123:5)
at firebase_core_web.FirebaseCoreWeb.new.injectSrcScript (firebase_core_web.dart:106:31)
at MappedIterator.new.(firebase_core_web.dart:171:16)
at MappedIterator.new.moveNext (iterable.dart:393:20)
解决方法
这个错误本质是Firebase JS脚本注入时的语法或版本兼容问题,可按以下步骤排查:
检查web/index.html的Firebase配置脚本
确保初始化脚本格式正确,无语法错误。以Firebase v9+模块化配置为例,正确写法如下:<script type="module"> import { initializeApp } from "https://www.gstatic.com/firebasejs/9.22.0/firebase-app.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); </script>若使用旧版命名空间式配置,需核对是否存在赋值语句错误(比如多余的等号、变量声明格式错误)。
对齐firebase_core_web与Firebase JS版本
firebase_core_web包和引入的Firebase JS版本不匹配会导致脚本注入异常:- 在
pubspec.yaml中锁定兼容的firebase_core_web版本,例如:firebase_core: ^2.15.0 firebase_core_web: ^2.15.0 - 确保
web/index.html中的Firebase JS版本与firebase_core_web依赖的版本一致(可查看pub.dev上该包的文档确认)。
- 在
清理缓存并重新构建
执行以下命令清理旧缓存,重新编译Web应用:flutter clean flutter pub get flutter build web --release旧编译缓存可能残留异常脚本,清理后重新构建可解决此类问题。
排查第三方Firebase插件版本冲突
若项目使用了firebase_auth_web、cloud_firestore_web等其他Firebase相关插件,需确保它们的版本与firebase_core_web保持一致,避免版本冲突引发的脚本注入错误。
内容的提问来源于stack exchange,提问作者Garamvölgyi Géza Gábor

