2014-07-09 113 views
6

一倍,从stdin一切都被印刷两次到stdout:createInterface打印在终端

var rl = require('readline'); 
var i = rl.createInterface(process.stdin, process.stdout); 
当我运行该代码

,所有我在终端上键入被复制。键入'你好世界产量:

hheelloo wwoorrlldd 

我想这是有道理的,它这样做,因为readline的模块是指管道输入到输出。但它不是也用于创建命令行界面吗?我很困惑,我该如何使用它。帮帮我?

回答

14

尝试使用terminal: false

var readline = require("readline"); 
var rl = readline.createInterface({ 
    input: process.stdin, 
    output: process.stdout, 
    terminal: false 
}); 
+0

工作。谢谢您的帮助 – dopatraman

-1

您应该使用的选项对象格式:

var i = rl.createInterface({ 
    input: process.stdin, 
    output: process.stdout 
}); 
+2

不解决问题。仍然看到double =/ – dopatraman

1

我有这个问题,也是和我固定它通过确保我永远只能有一个实例的一次readline.interface。我建议在函数中使用它的界面,以便在离开该上下文后清理它。或者,您可以简单地声明一个在应用程序中随处使用的全局实例。这里的底层问题是,当你有两个实例(或更多)监听同一个输入流(process.stdin)时,它们都会接收任何输入,并且它们都会处理它/将它发送到同一个输出流(process.stdout)。这就是你看到双重的原因。