使用Dart编写Firebase云函数时遇‘JSON未找到’错误求助
解决Dart转译Firebase云函数时的
Member not found: 'JSON'错误 问题根源
这个错误是由于Dart SDK版本与旧依赖包不兼容导致的:你当前使用的Dart SDK(大概率是2.12+的空安全版本)与front_end旧包的API冲突——旧包使用了ContentType.JSON常量,而新版本Dart中该常量已改为小写的ContentType.json。同时你依赖的build_node_compilers已废弃,无法适配新版build_runner,进一步加剧了版本冲突。
解决方案
1. 锁定兼容的Dart SDK版本
修改pubspec.yaml的environment字段,指定非空安全的稳定版SDK,适配旧依赖:
environment: sdk: '>=2.10.0 <2.12.0'
2. 清理缓存并重新拉取依赖
执行命令彻底清理缓存,确保获取与SDK匹配的依赖版本:
dart pub cache clean dart pub get
3. 调整构建依赖版本
将dev_dependencies改为以下兼容组合:
dev_dependencies: build_runner: ^1.10.0 build_node_compilers: ^0.3.1
这是build_node_compilers最后一个支持旧SDK的版本,与build_runner 1.10.x完全兼容。
4. 重新执行构建命令
dart run build_runner build --output=build
备选方案:跳过build_runner直接编译
如果上述步骤仍有问题,可直接用dart2js编译Dart文件,绕开构建链:
dart2js -O2 -o build/index.dart.js lib/index.dart
-O2参数开启优化,生成适合生产环境的JS文件。
长期维护建议
旧版firebase_functions_interop已停止更新,build_node_compilers也已废弃,建议迁移到Firebase官方Dart云函数SDK,该SDK支持最新Dart版本与空安全,且有官方维护,避免后续版本兼容问题。
内容的提问来源于stack exchange,提问作者Karolina Hagegård
相关产品推荐
相关产品推荐

