javascript - 使用终端将信息输入 Javascript

标签 javascript node.js 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

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

最佳答案

当使用重定向的标准输入运行程序时,您将连接到 ReadStream,而不是 TTY,因此不支持 TTY.setRawMode()。

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

根据定义,标准 Node ReadStreams 已经是“原始”的,因为没有对数据进行特殊处理。

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

关于javascript - 使用终端将信息输入 Javascript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28954746/

相关文章:

ios - 尝试运行迦太基时出错

c - 请求终端大小 [C - Linux]

javascript - onchange 事件不会在 javascript 的第一次更改时触发?

javascript - KnockoutJS 未在复选框列表中选择选中的值

javascript - 了解 emberjs 模型初始化和依赖关系

javascript - 如何传递查询参数而不将其显示在浏览器中

javascript - 如何更新 es6 数组中的元素?

c++ - 使 -std=c++11 成为 mac 终端的默认值

javascript - 如何在前端显示响应数据?

javascript - 链接 javascript promises 时如何处理 then() 函数中的条件?