git - Flutter doctor 脚本抛出错误然后崩溃

标签 git batch-file flutter

当我运行 flutter doctor -v 时,我遇到了一些 Uncaught Error ,然后崩溃了。

输出如下:

C:\Users\philb>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:\Users\philb\flutter\bin\cache\dart-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:\Users\philb\flutter
    • 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:\Users\philb\flutter_02.log;
please let us know at https://github.com/flutter/flutter/issues.

这是 PATHPATHEXT 环境变量:

Path=C:\Program Files (x86)\Common Files\Oracle\Java\javapath;C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\WINDOWS\System32\WindowsPowerShell\v1.0\;C:\Users\philb\.dnx\bin;C:\Program Files\Microsoft DNX\Dnvm\;C:\Program Files\Microsoft SQL Server\130\Tools\Binn\;C:\Program Files (x86)\Microsoft Emulator Manager\1.0\;C:\Program Files (x86)\Windows Kits\10\Windows Performance Toolkit\;C:\Program Files\MATLAB\R2016b\bin;C:\WINDOWS\System32\OpenSSH\;C:\Program Files\Dart\dart-sdk\bin;C:\Program Files\Git\cmd;C:\Program Files (x86)\Microsoft VS Code\bin;C:\Users\philb\AppData\Local\Microsoft\WindowsApps;c:\users\philb\flutter\bin

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

CMD窗口可以找到git

C:\Users\philb>where git
C:\Program Files\Git\cmd\git.exe

仅对于 S&G,我在 flutter.bat 中进行了一些调试,并且 PATHPATHEXT 在调用 git< 之前都正常。对 PATH 所做的唯一事情是,flutter.bat 脚本将另一个版本的“git”(mingit) 的位置添加到 PATH但这似乎并不重要。即使它使用该版本也会产生相同的错误。该脚本通过 for/f 循环调用 git/

flutter.bat中的脚本代码如下所示:

PUSHD "%flutter_root%"

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

POPD

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

我注意到flutter目录在解压后才被读取。但据我所知,我确实拥有“一切控制权”。我试图改变这一点,但在作为本地管理员进行复杂的 session 后,我未能清除只读标志,但不确定这是否是一个红鲱鱼!如果有人知道发生了什么,我可以再试一次!

最佳答案

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

修复:

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

我的设置为%JAVA_HOME%\bin\jcmd.exe。感谢甲骨文!!!

关于git - Flutter doctor 脚本抛出错误然后崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53469305/

相关文章:

android - 安装 build/app/outputs/flutter-apk/app.apk... 在 flutter 运行后丢失/没有发生。设备上未保存任何应用

混帐 : restrict access to specific folder for some users in bitbucket

batch-file - 如何使用通过批处理文件调用的程序打开非特定文件?

batch-file - 连接变量

windows - 如何读取单独的 PowerCfg 设置?

flutter - 当按钮位于父级时,如何从子级到父级获得值(value)?

android - 更改包名称后 Flutter App 无法正常工作

Git - 如何恢复原始远程删除

git mv 记录移动?

git - 如何将 bash 脚本直接嵌入到 git 别名中