2016-12-10 16 views
-3

那麼,我試圖在NodeJS中將一個簡單的if statement傳遞給process.stdin可讀流。但它似乎不工作。這裏是代碼:如何在process.stdin的可讀事件中添加條件?

process.stdin.on('readable', function() { 
    var chunk = process.stdin.read(); 
    if (chunk !== null && chunk == 'foo') { 
    process.stdout.write('true\n'); 
} else if (chunk !== null) { 
    process.stdout.write('false\n'); 
} 

有誰知道,我在做什麼錯在這裏?我也試過chunk == 'foo\n'但是,沒有運氣。它唯一的工作時間是當我設置chunk值爲一個數字,如chunk == 10

回答

2

@Siam的這裏的問題是,chunkBuffer型的,而不是string。您可以使用chunk.toString()使它成爲一個字符串,然後將其與"foo\n"比較和它的工作

所以您的代碼會是這個樣子:

process.stdin.on('readable', function() { 
    var chunk = process.stdin.read(); 
    if (chunk !== null && chunk.toString() == 'foo\n') { 
    process.stdout.write('true\n'); 
    } else if (chunk !== null) { 
    process.stdout.write('false\n'); 
    } 
}); 

編輯1:

製作確定您使用的是與輸入相同的比較字符串。例如在上述情況下,基於Windows的系統上的新行字符可以是CRLF\r\n,而在基於Unix的系統上,新行字符可以是LF\n。因此,嘗試使用"foo\r\n"進行比較,如果在窗口

+0

是啊我已經嘗試過,但沒有工作。我不知道什麼是錯的。 :( – m87

+0

它對我來說可能...可能是一些其他問題... 你嘗試使用「數據」事件?而不是「可讀」 另外,你使用的是什麼版本的node.js? –

+0

是的,我做了。但是與'數據'也是一樣的問題:/我正在使用NodeJS的7.0.0版, – m87

1

可以使用.prompt()(example)方法

+0

他問什麼是錯的,而不是替代 –

相關問題