当我运行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.
以下是PATH
和PATHEXT
环境变量:
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
中进行了一些调试,PATH
和PATHEXT
在调用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!!!