Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/425.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/36.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用终端将信息输入Javascript 我想把C++程序的输出输入到JavaScript文件的STDIN中。但是,我一直无法使用该方法将任何内容推入stdin node example.js < test.txt_Javascript_Node.js_Terminal - Fatal编程技术网

使用终端将信息输入Javascript 我想把C++程序的输出输入到JavaScript文件的STDIN中。但是,我一直无法使用该方法将任何内容推入stdin node example.js < test.txt

使用终端将信息输入Javascript 我想把C++程序的输出输入到JavaScript文件的STDIN中。但是,我一直无法使用该方法将任何内容推入stdin node example.js < test.txt,javascript,node.js,terminal,Javascript,Node.js,Terminal,有没有人遇到过这个问题,或者有没有关于如何修复它的想法?还是解决此问题的另一种方法?这是我如何在节点中处理来自STDIN的数据: function readStream(stream, callback) { var data = ''; stream.setEncoding('utf-8'); stream.on('data', onData); stream.on('end', onEnd); function onData(chunk) { data += c

有没有人遇到过这个问题,或者有没有关于如何修复它的想法?还是解决此问题的另一种方法?

这是我如何在节点中处理来自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(旧式流)已被弃用。

使用重定向的STDIN运行程序时,您连接的是ReadStream,而不是TTY,因此不支持TTY.setRawMode()

setRawMode()用于设置tty流,以便它不会以任何方式处理其数据,例如提供换行的特殊处理。这种经过处理的数据被称为“煮熟”

根据定义,标准节点读流已经是“原始”的,因为并没有对数据进行特殊处理


因此,在不调用setRawMode()的情况下重构您的代码,它应该可以正常工作。

您使用的是什么平台/操作系统?osx 10.10虽然我也希望它可以在raspberry Pia上工作,但请忽略它。我在重定向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);
  }
}