好吧,我正在尝试将一个简单的if statement
传递给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
值设置为一个数字,例如chunk == 10
。
答案 0 :(得分:2)
@Siam这里的问题是chunk
属于Buffer
类型,而不是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"
进行比较,如果是在Windows上
答案 1 :(得分:1)
您可以使用.prompt()(example)方法