使用终端将信息输入 Javascript
Input of Information into Javascript using terminal
我想获取 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
有没有人遇到过这个问题,或者有什么解决办法?或者解决这个问题的另一种方法?
这就是我在 Node 中处理来自 STDIN 的数据的方式:
function readStream(stream, callback) {
var data = '';
stream.setEncoding('utf-8');
stream.on('data', onData);
stream.on('end', onEnd);
function onData(chunk) {
data += chunk;
}
function onEnd() {
stream.removeListener('end', onEnd);
stream.removeListener('data', onData);
callback(data);
}
}
您问题中的错误消息("undefined is not a function")错误意味着您试图在 stdin
上调用一个不存在的方法。我在文档的粗略扫描中找不到 setRawMode
的提及。也许您使用的是过时的 API?我记得必须取消暂停 STDIN(旧式流)已被弃用。
当 运行 您的程序使用重定向标准输入时,您连接到 ReadStream,而不是 TTY,因此 TTY.setRawMode() 不受支持。
setRawMode() 用于设置 tty 流,使其不以任何方式处理其数据,例如提供换行符的特殊处理。此类处理后的数据被称为 "cooked".
根据定义,标准节点 ReadStreams 已经 "raw" 因为没有对数据进行特殊处理。
因此,在不调用 setRawMode() 的情况下重构您的代码,它应该可以正常工作。
我想获取 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
有没有人遇到过这个问题,或者有什么解决办法?或者解决这个问题的另一种方法?
这就是我在 Node 中处理来自 STDIN 的数据的方式:
function readStream(stream, callback) {
var data = '';
stream.setEncoding('utf-8');
stream.on('data', onData);
stream.on('end', onEnd);
function onData(chunk) {
data += chunk;
}
function onEnd() {
stream.removeListener('end', onEnd);
stream.removeListener('data', onData);
callback(data);
}
}
您问题中的错误消息("undefined is not a function")错误意味着您试图在 stdin
上调用一个不存在的方法。我在文档的粗略扫描中找不到 setRawMode
的提及。也许您使用的是过时的 API?我记得必须取消暂停 STDIN(旧式流)已被弃用。
当 运行 您的程序使用重定向标准输入时,您连接到 ReadStream,而不是 TTY,因此 TTY.setRawMode() 不受支持。
setRawMode() 用于设置 tty 流,使其不以任何方式处理其数据,例如提供换行符的特殊处理。此类处理后的数据被称为 "cooked".
根据定义,标准节点 ReadStreams 已经 "raw" 因为没有对数据进行特殊处理。
因此,在不调用 setRawMode() 的情况下重构您的代码,它应该可以正常工作。