Flutter讨厌的Waiting for another flutter command to release the startup lock…

1,198 阅读1分钟

Dart可以同时运行多个进程,但是Flutter只希望同时只有一个进程,于是它用lockfile来判断是否同一个操作系统内是否还有另外一个进程,大多数情况下都还好,只是当使用类似flutter pub get或者VSCode下Flutter:Get Package这类需要通过网络来更新package的时候,有可能因为网络不畅会出现长时间没有响应,如果这时候终止更新,下次运行flutter命令的时候,往往会出现讨厌的:

Waiting for another flutter command to release the startup lock…

这是因为存在一个<flutter安装目录>/bin/cache/lockfile文件,如果你尝试通过删除它来解决问题,你会发现它已经被某个dart进程占用了。

其实解决问题的方法很简单,把所有dart进程杀掉就可以,

Windows的PowerShell

taskkill /F /IM dart.exe

Mac的终端窗口

killall -9 dart

------------------------------

  1. flutter pub get如果运行太久,会自动进行提示,这个时候只需CTRL+C即可,VSCode下的Flutter:Get Package则没有这个功能,被Cancel掉后,还是需要杀掉dart进程。
  2. stackoverflow有人建议删掉lockfile,其实没有必要这样做,因为flutter不是通过检查lockfile文件是否存在来判断有无别的flutter进程的,它检查的是lockfile有无被别的进程占用。