NodeJS stdout不是tty,对节点+磁带+ tap-spec使用bash

uqxowvwt  于 2022-12-26  发布在  Node.js
关注(0)|答案(6)|浏览(143)

正在看一盘磁带+踢踏舞视频,并试图让它工作。
操作系统:Windows 7 Git

node main.js | ./node_modules/.bin/tap-spec

stdout不是tty。
main.js:

var test = require('tape');
var add = require('./add');

test('add: two numbers add correctly', function(t) {
var actual = add(1,2);
var expected = 3;
t.equal(actual, expected);
t.end();
});

add.js:

module.exports = function(a, b) {
return a + b;
};

winpty节点main.js|./node_modules/.bin/tap-spec无法解决此问题。

cnwbcb6i

cnwbcb6i1#

补充一下我的案例,我也遇到过类似的问题。使用winpty的两种解决方案都没有帮助,因此我在运行脚本时使用了不同的提示,使用node.exe而不是node(在我的案例中来自Git bash)。

不工作:

node myscript.js < some-input.txt > some-output.txt

工作时间:

node.exe myscript.js < some-input.txt > some-output.txt
7dl7o3gd

7dl7o3gd2#

诊断:

代码没有任何错误,我得到了以下输出:(操作系统:Linux)

add: two numbers add correctly

    ✔ should be equal

  total:     1
  passing:   1
  duration:  14ms

可能是Windows 7 Git Bash Shell的问题
我在哪里读到过:通过管道发送输出被Git Bash中断
要放弃它,请运行以下命令:

node -p -e "Boolean(process.stdout.isTTY)"

要使其工作,您需要以下输出:true

解决方案(适用于Windows):

$ node -p -e "Boolean(process.stdout.isTTY)"
false

使用winpty tool,它创建了一个隐藏的控制台,并在它和Cygwin/GitBashshell模拟的pty:

$ winpty node -p -e "Boolean(process.stdout.isTTY)"
true

READ MORE : Node.js doesn't run as tty on windows / cygwin Issue#3006

rryofs0p

rryofs0p3#

我在控制台上遇到了同样的问题“stdout不是tty”
这是因为控制台,在安装Git时有一个选项是选择默认终端。再次安装Git并选择终端作为Windows控制台,之后就可以了。

7dl7o3gd

7dl7o3gd4#

节点generateData.js〉db.json在Visual Studio代码的终端上运行:猛击

juud5qan

juud5qan5#

如果您在Windows中使用GitBash
在./bash_profile文件中,必须添加以下内容:

alias docker='winpty -Xallow-non-tty -Xplain docker'
kyks70gy

kyks70gy6#

只需先从git bash切换到cmd

$ cmd

相关问题