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

执行build_runner代码生成时遭遇analyzer 6.x相关编译错误

执行build_runner代码生成时遭遇analyzer 6.x相关编译错误

看起来你遇到的是analyzer 6.x版本的API破坏性变更导致的依赖兼容问题,我之前用Riverpod和OpenAPI Generator的时候也踩过几乎一模一样的坑,给你一步步拆解解决办法:

问题根源

你在dependency_overrides里指定了analyzer: ">=6.0.0 <6.6.0",但你的build_resolvers:2.5.4、dart_style:2.3.8这些依赖的旧版本,完全不兼容analyzer 6.x的新API:

  • analyzer 6.x直接移除了FileSource类(原路径package:analyzer/source/file_source.dart)
  • 删掉了CompilationUnitElement.libraryImports这个属性
  • 修改了MixinOnClause相关的AST节点定义
    这些API变更直接导致旧版本的构建工具代码编译失败。

具体解决步骤

1. 升级构建相关依赖到兼容版本

首先要把build_runner、build_resolvers、dart_style这些和代码生成、语法分析相关的依赖,升级到支持analyzer 6.x的版本:

修改你的pubspec.yaml的dev_dependencies块(也可以直接用命令行快速升级):

dev_dependencies:
  build_runner: ^2.5.0 # 2.5.0及以上版本完全适配analyzer 6.x
  build_resolvers: ^2.5.5 # 2.5.5版本修复了analyzer 6.x的API兼容问题
  dart_style: ^2.3.9 # 2.3.9开始支持analyzer 6.x的AST结构
  # 其他原有开发依赖保持不变

然后运行命令拉取兼容版本:

dart pub upgrade build_runner build_resolvers dart_style

2. 调整analyzer的版本约束(可选)

如果升级后还是出现版本冲突,可以调整dependency_overrides里的analyzer约束,或者直接移除这个override,让pub自动解析最兼容的版本:

dependency_overrides:
  analyzer: ^6.5.0 # 用更具体的兼容版本区间,或者直接删除这一行

3. 彻底清理缓存并重新执行生成

缓存残留经常会导致奇怪的兼容问题,先彻底清理再重新运行:

# 清理pub全局缓存
dart pub cache clean
# 删除本地项目的构建缓存和工具目录
rm -rf .dart_tool build
# 重新拉取所有依赖
dart pub get
# 重新执行代码生成(--delete-conflicting-outputs会自动处理冲突文件)
dart run build_runner build --delete-conflicting-outputs

额外排查点

别忘了检查你本地依赖的dennep_api(path: api/dennep_api)的pubspec.yaml,如果里面有旧的analyzer约束或者过时的生成器依赖,也会导致全局版本冲突,需要同步升级那里的依赖。

验证方法

运行dart pub outdated可以查看所有依赖的版本状态,确认build_runner、build_resolvers、analyzer这几个核心包都处于互相兼容的版本范围。

内容来源于stack exchange

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.07 08:54:36