Flutter Web生产环境Firestore字段更新报错:Cannot read properties of undefined
检查Firebase JS SDK版本兼容性
Flutter Web生产编译版本可能和本地开发使用的Firebase JS SDK版本存在兼容冲突。确认pubspec.yaml中firebase_core、cloud_firestore等依赖版本,与public/index.html里引入的Firebase JS SDK版本匹配,尽量保持大版本一致。验证生产环境Firebase配置与权限
部署时可能误替换Firebase配置,或生产项目的Firestore安全规则限制了操作。检查public/index.html中的firebaseConfig是否为生产项目的正确配置,同时确认Firestore安全规则允许对users集合的token字段执行写入操作。替换null值的处理方式
本地运行正常但生产编译后对null值的处理可能存在差异,尝试用FieldValue.delete()替代设置null:db.collection("users").doc("1234").update({"token": FieldValue.delete()});此操作会直接删除该字段,效果与设置null一致,可避开生产环境的JS编译问题。
检查Flutter Web编译参数
确保部署时使用标准的生产编译命令:flutter build web --release,避免使用可能干扰Firestore代码的额外编译参数或混淆设置,必要时重新编译项目。利用source map定位具体错误
编译时添加--source-maps参数生成source map文件,在浏览器开发者工具中关联该文件,可将报错的main.dart.js:4575定位回对应的Dart代码行,精准排查问题。
内容的提问来源于stack exchange,提问作者user3473535

