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

Dart执行pub get报pubspec.yaml版本约束无效错误咨询

问题原因
  • 报错提到的第14行不属于你项目中的pubspec.yaml。从报错给出的文件路径可以看到,出错的文件是全局Pub缓存下built_collection-4.2.2包自带的pubspec.yaml,行号是这个缓存文件自身的行计数,和你编写的项目配置文件只有13行没有关联。
  • 异常版本约束>=2-0-0-dev <3.0.0是built_collection 4.2.2这个传递依赖自身声明的SDK版本约束。这种用横杠分隔版本段的写法是Dart 2.0早期dev阶段使用的非标准临时写法,Dart 2.14及之后的稳定版SDK已经完全移除了对该写法的解析支持,你本地安装的2.16.1版本SDK读取到这个旧格式约束时就会直接抛出解析错误。

你之前调整项目自身的SDK版本范围没有效果,是因为报错发生在传递依赖自身配置的解析阶段,和你项目里声明的SDK约束没有直接关系。

修复方案

你可以根据自己的项目情况选择以下任意一种方案解决:

  • 优先推荐方案:升级项目直接依赖到适配新SDK的版本
    你当前配置里的build_runner: ^1.9.0、build_node_compilers: ^0.2.4、firebase_functions_interop: ^1.0.2都是2020年前后发布的旧版本,本身就不支持Dart 2.12之后的空安全特性和新版解析规则。将这几个依赖替换为当前最新的稳定版本后重新执行dart pub get,新的依赖链会拉取不存在旧格式约束问题的高版本built_collection,报错会直接消失。
  • 临时兼容方案:添加依赖覆盖强制指定兼容版本
    如果暂时不想改动现有依赖的版本,可以在项目pubspec.yaml的末尾添加如下配置,强制拉取适配新SDK的built_collection版本:
    dependency_overrides:
      built_collection: ^5.1.1
    
    配置保存后重新执行dart pub get即可绕过解析错误。注意如果旧版依赖和高版本built_collection存在API不兼容问题,代码运行阶段可能抛出异常,需要自行验证功能可用性。
  • 旧环境适配方案:降低本地Dart SDK版本
    如果必须保留当前所有依赖的旧版本不做任何改动,可以将本地安装的Dart SDK降级到2.13.x及更早的版本,这类旧版本还保留了对老式版本约束写法的兼容,解析时不会触发该错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 05:00:57