Flutter医生脚本抛出错误,然后崩溃



当我运行flutter doctor -v时,我会遇到几个未捕获的错误,然后崩溃。

以下输出:

C:Usersphilb>flutter doctor -v
'git rev-parse HEAD' is not recognized as an internal or external command,
operable program or batch file.
Building flutter tool...
Running pub upgrade...
'dir /a:l "c:Usersphilbflutterbincachedart-sdk" 2>nul   | find ">     bin [" 2>nul' is not recognized as an internal or external command,
operable program or batch file.
[√] Flutter (Channel beta, v0.11.9, on Microsoft Windows [Version 10.0.17134.407], locale en-GB)
• Flutter version 0.11.9 at c:Usersphilbflutter
• Framework revision d48e6e433c (5 days ago), 2018-11-20 22:05:23 -0500
• Engine revision 5c8147450d
• Dart version 2.1.0 (build 2.1.0-dev.9.4 f9ebf21297)
|CreateProcessW failed 2
Oops; flutter has exited unexpectedly.
Sending crash report to Google.
Crash report sent (report ID: 7c60cb5645c44cdd)
CreateProcessW failed 2                                                                                               Crash report written to C:Usersphilbflutter_02.log;
please let us know at https://github.com/flutter/flutter/issues.

以下是PATHPATHEXT环境变量:

Path=C:Program Files (x86)Common FilesOracleJavajavapath;C:WINDOWSsystem32;C:WINDOWS;C:WINDOWSSystem32Wbem;C:WINDOWSSystem32WindowsPowerShellv1.0;C:Usersphilb.dnxbin;C:Program FilesMicrosoft DNXDnvm;C:Program FilesMicrosoft SQL Server130ToolsBinn;C:Program Files (x86)Microsoft Emulator Manager1.0;C:Program Files (x86)Windows Kits10Windows Performance Toolkit;C:Program FilesMATLABR2016bbin;C:WINDOWSSystem32OpenSSH;C:Program FilesDartdart-sdkbin;C:Program FilesGitcmd;C:Program Files (x86)Microsoft VS Codebin;C:UsersphilbAppDataLocalMicrosoftWindowsApps;c:usersphilbflutterbin

PATHEXT=.COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.MSC

CMD窗口可以找到git

C:Usersphilb>where git
C:Program FilesGitcmdgit.exe

只为S&G我在flutter.bat中进行了一些调试,PATHPATHEXT在调用git之前都可以。对PATH所做的唯一一件事是flutter.bat脚本将另一个版本的"git"(mingit(的位置添加到PATH,但这似乎无关紧要。即使使用该版本,也会产生相同的错误。脚本通过for /f循环/调用git

flatter.bat中的脚本代码如下:

PUSHD "%flutter_root%"
FOR /f %%r IN ('git rev-parse HEAD') DO SET revision=%%r
POPD

我检查了flutter_root = /users/phil/flutter/bin

我注意到flutter目录是在提取后才读取的。但据我所知,我确实拥有"一切控制权"。我试图改变这一点,但在作为本地管理员进行了一次复杂的会话后,我未能清除只读标志,但不确定这是否是转移注意力!如果有人想一想发生了什么事,我可以再试一次!

我发现了问题。我安装了JAVA的最新版本,这似乎覆盖了ComSpec以指向他们的cmd.exe版本。我认为这是CMD工具用来启动子CMD的错误举动。恢复到system32版本,一切正常。

修复:

  • 打开控制面板-系统高级系统设置,然后单击按钮环境变量
  • 如果环境变量ComSpec设置为%SystemRoot%system32cmd.exe以外的任何值,通常扩展为C:Windowssystem32cmd.exe,则将其重置为Windows默认%SystemRoot%system32cmd.exe

Mine设置为%JAVA_HOME%binjcmd.exe。感谢Oracle!!!

最新更新