使用readline接口时,stdin的所有内容都会被打印两次到stdout:
var rl = require('readline');
var i = rl.createInterface(process.stdin, process.stdout);
当我运行此代码时,我在终端中键入的所有内容都是重复的。打字' hello world'产率:
hheelloo wwoorrlldd
我认为这样做是有意义的,因为readline模块意味着将输入传递给输出。但它是否也意味着用于创建命令行界面?我对如何使用它感到困惑。帮助
答案 0 :(得分:24)
尝试使用terminal: false
:
var readline = require("readline");
var rl = readline.createInterface({
input: process.stdin,
output: process.stdout,
terminal: false
});
答案 1 :(得分:4)
我也有这个问题,我通过确保一次只有一个readline.interface
的实例来修复它。我建议在使用它的函数中确定接口的范围,这样一旦你离开那个上下文,它就会被清理掉。或者,您可以简单地声明在应用程序中的任何位置使用的全局实例。这里的根本问题是,当你有两个(或更多)实例监听相同的输入流(process.stdin
)时,它们都将接收任何输入,它们将处理它/将其发送到相同的输出流( process.stdout
)。这就是你看到双倍的原因。
答案 2 :(得分:-2)
您应该使用选项对象格式:
var i = rl.createInterface({
input: process.stdin,
output: process.stdout
});