2014-07-09 112 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)。這就是你看到雙重的原因。