在Windows下使用gitbash执行"bower init"命令时出现错误。

7
当我在GitBash中运行bower init时,会显示以下错误: 注册需要交互式 shell。
附加错误详情:请注意,您可以使用 --config.interactive 手动强制使用交互式 shell。
3个回答

4

问题:mintty.exe

Issue 802提供了一个很好的解释:

我已经追踪到这个问题是由于mintty.exe引起的。

bower/lib/config.js文件中(对于bower v 1.4.1,第34行),tty.isatty(1)mintty.exe下返回false,但如果你运行cygwin.bat(这是使用Windows终端的bash --login -i),则返回true。

以下是一种方便的检查终端的方法:

node -e "var tty=require('tty'); console.log('tty.isatty(1):' + tty.isatty(1))"

可能相关:mintty - 问题#56“改进对本机控制台程序的支持”
对于那些遇到此问题并寻找解决方案的人来说,显而易见的快速解决方法是避免使用mintty。
这并不意味着您必须返回使用Windows终端进行bash操作,因为还有其他替代方法: 附言:如果您曾经注意到mintty.exe的其他问题,例如msysgit不能正确提示密码或节点repl不起作用,则可能是相同的问题。
解决方法:
  • 从运行命令中执行此操作
    cmd.exe /C "C:\Program Files\Git\bin\bash.exe" --login -i

如果你使用的是Windows,运行CMD并输入bower init即可。如果你使用的是minw64、mintty或者git-bash等终端,同样可以使用bower init命令。如果你使用的是git bash,按照以下步骤操作:
  • 卸载现有的GIT bash
  • 重新安装GIT bash
  • 在安装过程中进行如下设置:
    • 3a: 选择> Use Git form the Windows Command Prompt
    • 3b: 选择> Checkout Windows-style, commit Unix-style line endings
    • 3c: 选择> Use Windows' default console window

谢谢,你的第一种方法可行,但是每次我需要使用 bower 时都需要运行吗? - Kiran Saxena
@KiranSaxena 是的,要打开一个兼容的 shell(即不使用 mintty 的 shell)。 - VonC

1

你不必卸载/重新安装,可以使用Win CMD。你可以执行bower init然后切换回MinW64。找到一个解决方法...像这样启动git-bash,使用运行命令,稍后可以更改快捷方式。

cmd.exe /C "C:\Program Files\Git\bin\bash.exe" --login -i

1

在另一个终端,如 Node.js 命令提示符、Windows 的 cmd 或其他命令提示符中运行该命令。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接