Windows10系统pub global activate安装的Dart全局包每次运行都执行两次
问题诱发原因
你遇到的是Dart 2.12~2.13稳定版在Windows平台的已知原生bug:pub global activate生成的全局包启动批处理(.bat)脚本存在逻辑缺陷,脚本内的条件分支没有配置执行后退出逻辑,第一个分支调用dart运行目标包后,没有终止脚本进程,会继续向下执行第二个分支的重复dart调用,最终表现为全局包程序被触发两次。
可行解决方案
- 方案1:升级Dart SDK到2.14.0及以上稳定版本
该bug在Dart 2.14.0版本已被官方修复,升级完成后重新执行一次pub global activate <对应包名>覆盖旧的启动脚本即可解决问题。 - 方案2:手动修改现有全局包启动脚本(适合暂时无法升级SDK的场景)
- 打开pub全局缓存的bin目录,默认路径为
%LOCALAPPDATA%\Pub\Cache\bin - 找到对应全局包的.bat启动文件,用任意文本编辑器打开
- 给脚本中每一行执行dart命令的语句末尾,添加
exit /b %errorlevel%,保证单次调用完成后直接退出脚本,不会触发后续重复执行逻辑
- 打开pub全局缓存的bin目录,默认路径为
- 方案3:使用官方指定的全局包调用命令
直接运行dart pub global run <包名>启动目标包,该调用方式不会走生成的bat脚本,可完全规避重复执行问题。
内容的提问来源于stack exchange,提问作者OYHP
相关产品推荐
相关产品推荐

