You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用FlutterFire关联Firebase项目时出现FormatException如何解决?

问题

在Windows系统下将现有Flutter项目部署到Firebase时,执行flutterfire configure --project=PROJECT触发FormatException,错误原因是Firebase CLI返回欢迎界面而非预期的JSON响应,具体错误日志如下:

Fetching available Firebase projects...
Failed to parse JSON response from Firebase CLI. JSON response: #

     Welcome to...

######## #### ########  ######## ########     ###     ######  ########

##        ##  ##     ## ##       ##     ##  ##   ##  ##       ##

######    ##  ########  ######   ########  #########  ######  ######

##        ##  ##    ##  ##       ##     ## ##     ##       ## ##

##       #### ##     ## ######## ########  ##     ##  ######  ########

# 

Let's make sure your Firebase CLI is ready...

> 

FormatException: Unexpected character (at character 1)
#

已尝试的无效操作:

  • 将Firebase独立二进制文件重命名为firebase.exe
  • 重装多个版本的64位NodeJs(14.21.3、18.5.0、20.12.2、22.0.0)
  • 将npm路径添加至系统和用户环境变量
  • 执行firebase init未生成lib/firebase_options.dart
  • 检查操作步骤完整性
  • 在PowerShell及独立二进制环境中运行Firebase
解决方案

1. 完成Firebase CLI的登录初始化

独立二进制版Firebase CLI首次运行会弹出欢迎引导界面,需先完成登录授权:

  • 直接在终端执行firebase login,按提示在浏览器中完成账号登录与授权
  • 登录成功后执行firebase projects:list,验证是否能正常返回JSON格式的项目列表

2. 手动指定Firebase CLI路径给FlutterFire CLI

若FlutterFire CLI无法识别正确的Firebase二进制文件路径,可通过参数强制指定:

flutterfire configure --project=PROJECT --firebase-cli-path="C:\实际路径\firebase.exe"

将命令中的路径替换为你本地Firebase独立二进制文件的实际存储路径。

3. 清理并重装FlutterFire CLI

缓存异常可能导致交互错误,执行以下命令重置FlutterFire CLI:

dart pub global deactivate flutterfire_cli
dart pub cache clean
dart pub global activate flutterfire_cli

4. 手动生成firebase_options.dart

如果上述方法均无效,可绕过FlutterFire CLI手动创建配置文件:

  1. 打开Firebase控制台进入目标项目,点击「添加应用」选择Flutter,获取Android的google-services.json和iOS的GoogleService-Info.plist
  2. 在项目的lib目录下创建firebase_options.dart,参考以下模板填充配置:
import 'package:firebase_core/firebase_core.dart';
import 'package:flutter/foundation.dart';

DefaultFirebaseOptions get currentPlatform {
  if (kIsWeb) {
    throw UnsupportedError(
      'DefaultFirebaseOptions have not been configured for web - '
      'you can reconfigure this by running the FlutterFire CLI again.',
    );
  }
  switch (defaultTargetPlatform) {
    case TargetPlatform.android:
      return DefaultFirebaseOptions.android;
    case TargetPlatform.iOS:
      return DefaultFirebaseOptions.ios;
    case TargetPlatform.macOS:
      return DefaultFirebaseOptions.macOS;
    case TargetPlatform.windows:
      return DefaultFirebaseOptions.windows;
    case TargetPlatform.linux:
      return DefaultFirebaseOptions.linux;
    default:
      throw UnsupportedError(
        'DefaultFirebaseOptions are not supported for this platform.',
      );
  }
}

class DefaultFirebaseOptions {
  static FirebaseOptions get android {
    return FirebaseOptions(
      apiKey: '你的Android项目API_KEY',
      appId: '你的Android项目APP_ID',
      messagingSenderId: '你的消息发送者ID',
      projectId: '你的Firebase项目ID',
      storageBucket: '你的存储桶地址',
    );
  }

  static FirebaseOptions get ios {
    return FirebaseOptions(
      apiKey: '你的iOS项目API_KEY',
      appId: '你的iOS项目APP_ID',
      messagingSenderId: '你的消息发送者ID',
      projectId: '你的Firebase项目ID',
      storageBucket: '你的存储桶地址',
      iosClientId: '你的iOS客户端ID',
      iosBundleId: '你的iOS包名',
    );
  }

  // 按需添加macOS、Windows、Linux平台的配置信息
}

将模板中的占位符替换为Firebase控制台提供的对应项目参数。

5. 调整环境变量优先级

确保Firebase独立二进制文件所在路径在系统环境变量中的优先级高于NodeJs的npm路径,避免FlutterFire CLI误调用npm安装的损坏版本。

内容的提问来源于stack exchange,提问作者Age Brouwer

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.25 02:07:38