gpt4 book ai didi

Node.js 从 shell 管道读取后如何使用 stdin 流读取用户输入

转载 作者:太空宇宙 更新时间:2023-11-04 02:16:15 25 4
gpt4 key购买 nike

从 shell 管道接收数据后,我需要通过提示询问用户。但是从管道读取数据后应用程序立即关闭。热衷于让它等待用户输入吗?

var readline = require('readline');

var data = '';
process.stdin.setEncoding('utf8');
process.stdin.on('readable', function() {
var chunk = process.stdin.read();
if (chunk !== null) {
data+=chunk;
}
});

process.stdin.on('end', function() {

console.log('from pipe: ' + data);

const rl = readline.createInterface({
input: process.stdin,
output: process.stdout
});

rl.question('prompt> ', (answer) => {
console.log('from prompt: ', answer);
rl.close();
});
});

当我运行这个脚本时

$ echo "pipe" | node app.js

打印

from pipe: pipe

prompt>

并立即退出,不等待提示。

我使用的是 Windows,Node v4.2.1

最佳答案

就像 @AlexeyTen 在评论中所说,使用 ttys包或使用 tty 的类似包,用于需要来自控制台的输入。

var ttys = require('ttys');
const rl = readline.createInterface({
input: ttys.stdin,
output: ttys.stdout
});

关于Node.js 从 shell 管道读取后如何使用 stdin 流读取用户输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35572742/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com