执行dart migrate空安全迁移命令报错:找不到'migrate'文件
报错核心成因
- 本地Dart SDK版本严重不匹配:当前本机安装的Dart版本为2.4.0,属于远早于空安全特性发布的旧版本。空安全的稳定支持、配套内置的
dart migrate迁移工具,从Dart 2.12版本才开始正式提供,2.4.0版本的CLI根本不存在migrate这个内置子命令。 - 旧版本CLI的参数解析规则会把非内置的参数识别为待读取的Dart文件路径,因此执行
dart migrate时,CLI会尝试在当前目录查找名为migrate的代码文件,最终抛出文件不存在的报错,和你看到的报错信息完全对应。 - 项目配置与本地环境存在版本断层:当前项目的pubspec.yaml已经明确指定SDK版本要求为
>=2.12.0 <3.0.0,和本地2.4.0的版本完全不兼容,即便不做空安全迁移,本地也无法正常拉取项目依赖、运行项目代码。
解决步骤
- 升级本地Dart SDK到符合项目要求的版本,升级完成后通过
dart --version确认版本号处于2.12.0及以上的区间。 - 排查多环境路径冲突:如果本机存在多个Dart版本的安装记录,执行
which dart确认当前终端调用的dart命令,来自刚升级的新版本SDK路径,避免旧版本的SDK命令被系统优先调用。 - 完成SDK升级后,在项目根目录先执行
dart pub get同步匹配版本的依赖,再重新执行dart migrate即可正常启动空安全迁移工具。
内容的提问来源于stack exchange,提问作者Tony
相关产品推荐
相关产品推荐

