好吧,我试图将一个简单的if语句传递给NodeJS中的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 :(得分:0)
这里的问题是块是Buffer类型,而不是字符串。您可以使用chunk.toString()将其作为字符串,然后将其与foo\n
(如果在Linux上)或foo\r\n
(如果在Windows上)进行比较,它将起作用
所以你的代码看起来像这样:
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');
}
});