Mongo_dart类型赋值错误:Rational无法赋值给Decimal问题求助
问题解决:Dart连接MongoDB时出现类型赋值错误
问题本质
你遇到的错误是由于bson-2.0.1库与你使用的Dart dev版SDK(2.19.0-264.0.dev)存在兼容性问题,具体表现为Rational类型无法赋值给Decimal类型,属于依赖库的版本适配或类型定义问题。
解决方案
1. 升级/调整依赖版本
打开项目的pubspec.yaml文件,将mongo_dart替换为当前最新稳定版,或手动指定兼容的bson版本,示例:
dependencies: shelf: ^1.4.0 shelf_router: ^1.1.0 mongo_dart: ^0.9.1+1 # 替换为最新稳定兼容版
修改后执行dart pub get更新依赖。
2. 清除Pub缓存并重新获取依赖
缓存的旧依赖可能引发冲突,执行以下命令:
dart pub cache clean dart pub get
3. 切换到Dart稳定版SDK
Dev版SDK存在未稳定的API变动,切换到稳定版(如2.18.x系列)可规避此类兼容性问题,执行命令安装并切换:
dart sdk install stable dart sdk use stable
4. 临时修复(仅紧急场景使用,不推荐)
找到报错的decimal_128.dart文件(路径:../../.pub-cache/hosted/pub.dartlang.org/bson-2.0.1/lib/src/types/decimal_128.dart),定位到第36行,将Rational类型转换为Decimal类型,示例:
// 原报错代码 Decimal value = Rational(...); // 修改后 Decimal value = Rational(...).toDecimal(); // 根据实际方法调整转换逻辑
注意:此方法仅为临时 workaround,后续依赖更新后可能失效,优先通过版本调整解决问题。
内容的提问来源于stack exchange,提问作者Tusshu
相关产品推荐
相关产品推荐

