javascript - 在 NodeJS 中同时输入和输出

标签 javascript node.js

所以我尝试在 NodeJS 中制作一个脚本,它可以从衍生的子进程中获取输出并将其打印到控制台,并从用户那里获取输入并将其发送到子进程并按 enter。我目前有这个设置:

function log(data) {
  process.stdout.write(data.toString())
}

childProcess.stdout.on('data', log)
childProcess.stderr.on('data', log)

let rl = readline.createInterface({
  input: process.stdin,
  output: process.stdout
});

rl.question("Command>> ", cmd => {
  childProcess.stdin.write(cmd + '\n')
})

但是如果在子进程给出第一个输出时我没有给它一个答案,它会记录我的光标所在的位置:在问题上。如果可能的话,我也希望将输入提示保留在底部,但这不是太重要。

我该怎么做呢?感谢所有帮助,谢谢!

最佳答案

因此,感谢@Bergi 的评论,我仔细研究了 readline,并找到了一种不同的方法。这是我所做的:

function log(data) {
  readline.cursorTo(process.stdout, 0, process.stdout.rows + 1)
  process.stdout.write(data.toString())
}

childProcess.stdout.on('data', log)
childProcess.stderr.on('data', log)

let rl = readline.createInterface({
  input: process.stdin,
  output: process.stdout,
  prompt: ''
})

rl.on('line', (line) => {
  childProcess.stdin.write(line.trim() + '\n')
  rl.prompt()
})

我承认,这不是最好的,但这是我所需要的:)谢谢 Bergi!

关于javascript - 在 NodeJS 中同时输入和输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62894335/

相关文章:

javascript - ExtJS 现代 : Painted Event is not triggered in iOS 13. 4+ WKWebview

node.js - everyauth 密码示例错误

node.js - Nodejs 属性顺序保证

javascript - 如何在 Electron 中制作尺寸对象?

javascript - 使用 gulp v4 重构的监视任务不起作用

javascript - 从 URL 中提取变量并将其设置为文本框的值

angularjs - 无法从 request.body 中提取发布数据

c++ - 如何从 C++ Node.js 插件读取/写入数据到 ArrayBuffer?

javascript - 如何将指令模板的属性附加到 AngularJS 中父元素以外的其他元素?

javascript - Zurb 基金会 6 : the topbar doesn´t collapse