使用终端将信息输入到Javascript中
Input of Information into Javascript using terminal
我想获取一个 c++ 程序的输出并将其输入到 javascript 文件的 stdin 中。但是,我无法使用该方法将任何东西推入标准丁......
node example.js < test.txt
因为我收到以下错误。
示例.js:35
stdin.setRawMode( true );
类型错误:未定义不是函数
在对象。(例.js:35:7)
在Module._compile(模块.js:460:26)
在Object.Module._extensions..JS(模块.js:478:10)
at Module.load (module.js:355:32)
在Function.Module._load(模块.js:310:12)
at Function.Module.runMain (module.js:501:10)
启动时(节点.js:129:16)
在节点.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 流,以便它不会以任何方式处理其数据,例如提供换行的特殊处理。此类处理后的数据称为"煮熟"。
根据定义,标准节点 ReadStream 已经是"原始"的,因为没有对数据进行特殊处理。
因此,在不调用 setRawMode() 的情况下重构您的代码,它应该可以正常工作。
这是我在 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);
}
}
问题中的错误消息("未定义不是函数")错误表示您尝试在不存在的stdin
上调用方法。我在粗略扫描文档中找不到提及setRawMode
的内容。也许您正在使用过时的 API?我记得必须取消暂停 STDIN(旧式流)已被弃用。
- 我怎样才能得到“__类型“;用javascript输入json
- 如何获取javascript输入并在html中调用它
- JavaScript - 输入按钮隐藏 - 不起作用
- 选中复选框时启用Javascript输入类型,未选中复选框则禁用
- JavaScript-输入不是数字时提示
- Javascript:输入框-自动大写第一个字母,但可以重写
- Javascript输入格式
- 来自键盘的JavaScript输入没有“prompt()”方法弹出窗口(如Pascal Readln或GWiBasic输
- JavaScript 输入值问题
- Javascript输入更改
- Javascript输入问题
- JavaScript 输入字段不可编辑
- 动态生成的 Javascript 输入字段无法被 Httpservletrequest 识别???仅在 Chrome 中
- JavaScript 输入标签未设置 ID 或类
- JavaScript 输入字段验证
- 如何使用 javascript 输入 2 个框
- 直接从Javascript输入/传递图像到输入类型=“文件名”
- 如何显示双引号以通过javascript输入
- HTML5/Javascript 输入只读状态在 IOS 上使用 XCode 滑动
- Javascript 输入到 HTML 表单 onSubmit 与 # 操作到 PHP $_GET(同一文件上的所有代码