2017-02-01 11 views
2

まあ、単純なif文をNodeJSの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 == 10のような数値に設定する場合です。

+0

「動作しているとは思われません」とはどういう意味ですか?入力は何ですか? 'chunk'の実際の値は何ですか? ( 'console.log(chunk)'を実行するとどうなるでしょうか?) –

+0

process.stdinに 'foo'と入力すると、チャンクは ''となりますので、 '(true)を与える' if(chunk.toString()=== 'foo \ n') ' ' – mk12ok

答えて

0

ここでの問題は、チャンクがバッファ型であり、文字列ではないことです。あなたは、だからあなたのコードは次のようになり、それ文字列行い、その後、foo\n(Linuxの場合)またはfoo\r\nとそれを比較する(Windowsの場合)、それが

を仕事とするchunk.toString()を使用することができます。

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

ありがとう!それは魅力のように働いた:) –

関連する問題