我想获取 C++ 程序的输出并将其输入到 javascript 文件的标准输入中。但是,我无法使用该方法将任何内容插入标准输入...
node example.js < test.txt
因为我收到以下错误。
example.js:35
stdin.setRawMode( true );
TypeError: undefined is not a function
at Object. (example.js:35:7)
at Module._compile (module.js:460:26)
at Object.Module._extensions..js (module.js:478:10)
at Module.load (module.js:355:32)
at Function.Module._load (module.js:310:12)
at Function.Module.runMain (module.js:501:10)
at startup (node.js:129:16)
at node.js:814:3
违规代码如下所示。它在正常输入期间工作正常,但在上述情况下崩溃。
var stdin = process.stdin;
stdin.setRawMode( true );
stdin.resume();
stdin.setEncoding( 'utf8' );
stdin.on( 'data', function( key ){
//do stuff based upon input
有没有人遇到过这个问题,或者有任何关于如何解决它的想法?或者解决这个问题的另一种方法?
最佳答案
当使用重定向的标准输入运行程序时,您将连接到 ReadStream,而不是 TTY,因此不支持 TTY.setRawMode()。
setRawMode() 用于设置 tty 流,使其不以任何方式处理其数据,例如提供换行符的特殊处理。这种处理过的数据被称为“煮熟”。
根据定义,标准 Node ReadStreams 已经是“原始”的,因为没有对数据进行特殊处理。
因此,在不调用 setRawMode() 的情况下重构您的代码,它应该可以正常工作。
关于javascript - 使用终端将信息输入 Javascript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28954746/