Flutter Web上传Firebase Storage报错:无默认存储桶
解决Firebase Storage [firebase_storage/no-bucket] 错误
向Firebase Storage上传文件时触发错误:[firebase_storage/no-bucket] No default storage bucket could be found. Ensure you have correctly followed the Getting Started guide,尝试相关方案后仍未解决,代码如下:
Future main() async { runApp(StartPoint()); WidgetsFlutterBinding.ensureInitialized(); await Firebase.initializeApp( name: "myapp", options: kIsWeb || Platform.isAndroid ? FirebaseOptions( apiKey: "api_key", appId: "appID", messagingSenderId: "messaging", projectId: "proID", storageBucket: "myapp.appspot.com", ):null, ); }
修复步骤
调整初始化顺序:
WidgetsFlutterBinding.ensureInitialized()必须在runApp()之前调用,否则Flutter引擎初始化不完整会导致Firebase初始化异常:Future main() async { WidgetsFlutterBinding.ensureInitialized(); await Firebase.initializeApp( name: "myapp", options: kIsWeb || Platform.isAndroid ? FirebaseOptions( apiKey: "api_key", appId: "appID", messagingSenderId: "messaging", projectId: "proID", storageBucket: "myapp.appspot.com", ):null, ); runApp(StartPoint()); }绑定命名App实例到Storage:初始化时指定了
name: "myapp",默认Firebase实例未被初始化,后续使用Storage必须传入该命名App实例:// 获取命名的Firebase App实例 final FirebaseApp app = Firebase.app("myapp"); // 基于该实例初始化Storage final FirebaseStorage storage = FirebaseStorage.instanceFor(app: app); // 使用该storage实例执行上传操作 await storage.ref("path/to/target/file").putFile(yourLocalFile);补全iOS平台配置:当前代码中iOS平台的
options为null,会导致iOS端无法正确初始化Firebase,需补充iOS的配置参数(从Firebase控制台获取对应iOS项目的配置信息):options: kIsWeb || Platform.isAndroid || Platform.isIOS ? FirebaseOptions( apiKey: "api_key", appId: "appID", messagingSenderId: "messaging", projectId: "proID", storageBucket: "myapp.appspot.com", iosBundleId: "com.your.app.bundle", // 替换为你的iOS包名 ):null,验证存储桶配置:确认Firebase控制台已创建存储桶,且代码中
storageBucket的值与控制台显示的存储桶地址完全一致(格式通常为项目ID.appspot.com)。
内容的提问来源于stack exchange,提问作者Terminator
相关产品推荐
相关产品推荐

