如何在process.stdin的可读事件中添加条件?
How to add conditions in process.stdin's readable event?
好吧,我正在尝试将一个简单的 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
.
您可以使用 .prompt() (example) 方法
@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
好吧,我正在尝试将一个简单的 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
.
您可以使用 .prompt() (example) 方法
@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